单向链表的建立(2)

链表的建立可以使用尾插法,也可以使用头插法,头插法就是从头节点开始,向前扩展节点,最后生成带头节点的单向链表,使得内容与输入相反。

链表的定义与(1)中相同,这里只介绍链表的建立函数。

 1 LNode *create(int n)
 2 {
 3     int m;
 4     LNode *head=(LNode *)malloc(sizeof(LNode));
 5     LNode *tail=(LNode *)malloc(sizeof(LNode));
 6     LNode *p;
 7     head->next=NULL;
 8     for(int i=0;i<n;i++)
 9     {
10         p=(LNode *)malloc(sizeof(LNode));
11         scanf("%d",&m);
12         p->data = m;
13         p->next=head->next;
14         head->next=p;
15     }
16     return head;
17 }

开始一定要为头节点申请内存空间,并赋值他的后继节点。

例如,我们输入1,2,3,4,5

输入1时

12行:p节点赋值1

13行:p节点指向head节点的后继(此时为空),即p指向了空

14行:head指向p

这样形成了,head(空)指向p,p指向空的链表

输入2时

12行:p节点赋值2

13行:p节点(2)指向(1)节点

14行:head节点指向p节点

这样每次保证head节点指向最新插入的节点,形成了倒序,head中没有数据。

原文地址:https://www.cnblogs.com/wktwj/p/4869957.html