头插法创建链表

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 /*
 4 头插法建立链表:所谓头插法,就是新来的结点每次都插在头结点后面
 5 内功心法:让新来的结点先有所指向(指向头结点的下一个结点),新来的结点,有所指向不会打断原有的指向关系。
 6 */
 7 typedef struct node
 8 {
 9     int data;
10     struct node * next;
11 }NODE;
12 NODE * Createlist()
13 {
14     NODE *head = (NODE*)malloc(sizeof(NODE));
15     head->next = NULL;
16     
17     NODE * cur = NULL;
18     int data;
19     printf("请输入结点数据\n");
20     scanf("%d",&data);
21 
22     while(data)
23     {
24         cur = (NODE *)malloc(sizeof(NODE));//创建一个新结点
25         cur->data = data;
26         cur->next = head->next;//让新结点有所指向,指向头结点的下一个结点
27         head->next = cur;
28         scanf("%d",&data);
29     }
30 
31     return head;
32 }
33 void traverList(NODE *head)
34 {
35     head = head->next;//跳过头结点,因为头结点的data域为空
36     while(head)
37     {
38         printf("%d",head->data);
39         head = head->next;
40     }
41 }
42 int main(void)
43 {
44 //建立链表
45     NODE *head = Createlist();
46 //遍历链表
47     traverList(head);
48     
49     return 0;
50 }

 

posted on 2018-09-23 22:13  王朝马汉  阅读(1312)  评论(0编辑  收藏  举报

导航