//链表结构
//a是数据域
//node是指针域
//typedef是结构体简化语句
//node用于后面初始化空间的时候取结构体的占用空间大小
//listnode是整个链表的头指针指向,即指向链表的头结点的指针
typedef struct node(){
int a;
node *next;
}node,*listnode;
//头插法初始化链表
//思想是将头节点初始化,还要将初始的数据也初始化。
//这个函数接收一个listnode,即指向该结构体的指针,但是这个时候这个指针指向的是空的,是随机,同时返回一个地址分配好了的初始化好了的一个链表头指针
listnode inithead(listnode &s){
//头插法初始化链表
//建立头节点,已经在上面完成
//分配空间
s = (listnode *)malloc(sizeof(node));
//头节点指针置空
s->next = null;
//插入初始数据
//初始化数据变量
int a;
//获得初始数据,第一个数据
scanf("%d",a);
//判断结束提示
while(a!=9999){
//初始化新节点
node new = (listnode *)malloc(sizeof(node));
//数据存入新结点
new->data = a;
//新结点的指向,应该是头节点之后的节点(先连后断原则)
new->next = s->next;
//头指针的指向,就是头节点,指向新的节点
s->next = new;
//继续获得数据
scanf("%d",a);
}
return s;
}