数据结构 ,C语言,单链表头插入,语句看不懂请高手指教

好心人帮助啊!!!!

在学习数据结构,使用的是C语言,在学习线性表的单链表头插入语句看不懂. 实际上我是看不懂 head 头指针,不知道是作者写错了,还是我太差了.

说明:
头插法建表
该方法从一个空表开始,重复读入数据,生成新接点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读如结束标志为止.在空链表head中依次插入a,b,c之后,将d插入到当前链表表头时指针的修改情况.具体算法如下:

1 LinkList CreateListF(void) //返回单链表的头指针
2 {char ch;
3 LinkList head; //头指针
4 ListNode *s; //工作指针
5 head=NULL; //链表开始为空
6 ch=getchar(); //读第1个字符
8 while(ch!='\n'){
9 s=(ListNode *)malloc(sizeof(ListNode)); //生成新结点,
10 s->data=ch;
11 s->next=head;
12 head=s;
13 ch=getchar(); //读入下一个字符
14 }
15 return head; //返回头指针
16 }

我就是看不懂,问题一、上面说的:空链表head中依次插入a,b,c之后,将d插入;
我就不明白了,这段程序是 插入abc之后再插如d.还是已经有abc了,这段程序只是插入d.

问题二、上面的出现了三个head,分别在5、11、12行,我就看不懂,第5行说head=NULL; 第11行我可以不可以理解为s->next=NULL;这样就不对了,因为是头插入,不可能next 为空啊,

问题三、是不是作者写错了。

谢谢你的帮助,如果我知道为什么了,一定重谢

一、这段程序是依次在头结点之前插入abc,之后再插入d,原来链表是空的
二、当第一次进入循环,设插入的是元素a,那么s中存放的就是a,s->next=head; 就是为了将a放在head的前面,至于head是不是null不影响结构。这个时候a就是链表头,而且链表中只有一个元素。另外一个链表结束的标记就是链表中,某一个元素的next为null
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答