标签:
链表的建立可以使用尾插法,也可以使用头插法,头插法就是从头节点开始,向前扩展节点,最后生成带头节点的单向链表,使得内容与输入相反。
链表的定义与(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中没有数据。
标签:
原文地址:http://www.cnblogs.com/wktwj/p/4869957.html