单链表的头插法(C语言实现)
#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct LNode{ int data; struct LNode* next; //next是一个指向结构体类型的指针, LNode* 是一个指针数据类型类似int,float那样的数据类型 }LNode,*LinkList; //创建了2个LNode结构体变量,一个是LNode,另一个是*LinkList。 LinkList List_HeadInsert(LinkList &L , int n)//返回值为一个指针,指针类型为LinkList,这里的&是引用符号,不是取地址符号 { int i,x; LNode *s; L = (LinkList)malloc(sizeof(LNode));//malloc函数返回值是一个指针(地址),大小为数据类型大小 L->next = NULL; for(i=0;i<n;i++) { s = (LinkList)malloc(sizeof(LNode)); printf("请输入第%d个数字:",i+1); scanf("%d",&x); s->data = x; s->next = L->next; L->next = s; } return L; } int main() { int n; LNode* node; LinkList L;//上面函数的返回值是LinkList类型,那么创建变量时也应该创建一个LinkList类型的变量,不能用LNode创建 printf("请输入节点个数n:"); scanf("%d",&n); List_HeadInsert(L,n); node = L->next; printf("按照单链表的顺序输出链表元素:\n"); while(node != NULL)//遍历链表不多说 { printf("%d ",node->data); node = node->next; } printf("\n"); return 0; }