建立链表—头插法尾插法—有无头结点

Posted 空空空空白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建立链表—头插法尾插法—有无头结点相关的知识,希望对你有一定的参考价值。

1.建立链表-头插法-头结点

 1 //建立链表-头插法-头结点
 2 LinkList CreatList_head()
 3 {
 4     DataType x;                                 //数据
 5     LinkList p,head;                            //结点
 6     head = (LinkList)malloc(sizeof(LNode));
 7     head->next = NULL;
 8     head->data = 0;
 9 
10     scanf("%d",&x);
11     while(x != 999)
12     {
13         p = (LinkList)malloc(sizeof(LNode));
14         p->data = x;                     //存数据
15         p->next = head->next;
16         head->next = p;
17         head->data++;                //结点计数
18         scanf("%d",&x);
19     }
20     return head;
21 }
22 
23 //输出链表-头插法-头结点
24 void PrintList_head(LinkList p)
25 {
26     LinkList a;
27     a = p->next;
28     while(a != NULL)
29     {
30         printf("%d  ",a->data);
31         a = a->next;
32     }
33     printf("\n");
34 }

 

2.建立链表-头插法-无头结点

 1 //建立链表-头插法-无头结点
 2 LinkList CreatList()
 3 {
 4     DataType x;                                
 5     LinkList p,head;                         
 6     head = NULL;
 7 
 8     scanf("%d",&x);
 9     while(x != 999)
10     {
11         p = (LinkList)malloc(sizeof(LNode));
12         p->data = x;
13         if(head == NULL)
14         {    head = p;
15             p->next = NULL;
16         }
17         else
18         {
19             p->next = head;
20             head = p;
21         }
22         scanf("%d",&x);
23     }
24     return head;
25 }
26 
27 
28 //输出链表-头插法-无头结点
29 void PrintList(LinkList p)
30 {
31     LinkList a;
32     a = p;
33     while(a != NULL)
34     {
35         printf("%d  ",a->data);
36         a = a->next;
37     }
38     printf("\n");
39 }

 

3.建立链表-尾插法-无头结点

 

 1 //建立链表-头插法-无头结点
 2 LinkList CCC()
 3 {
 4     DataType x;                                
 5     LinkList p,head;                         
 6     head = NULL;
 7 
 8     scanf("%d",&x);
 9     while(x != 999)
10     {
11         p = (LinkList)malloc(sizeof(LNode));
12         p->data = x;
13         p->next = head;
14         head = p;
15     
16         scanf("%d",&x);
17     }
18     return head;
19 }
20 
21 
22 //输出链表-头插法-无头结点
23 void PPP(LinkList p)
24 {
25     LinkList a;
26     a = p;
27     while(a != NULL)
28     {
29         printf("%d  ",a->data);
30         a = a->next;
31     }
32     printf("\n");
33 }

 

4.建立链表-尾插法-头结点

 

 1 //建立链表-尾插法-头结点
 2 LinkList Tailhead()
 3 {
 4     DataType x;                               
 5     LinkList p,head,r;                           
 6     head = (LinkList)malloc(sizeof(LNode));
 7     head->next = NULL;
 8     r = head;
 9     scanf("%d",&x);
10     while(x != 999)
11     {
12         p = (LinkList)malloc(sizeof(LNode));
13         p->data = x;                    
14         p->next = r->next;
15         r->next = p;
16         r = p;             
17         scanf("%d",&x);
18     }
19 
20     return head;
21 }
22 //输出链表-尾插法-头结点
23 void PrintTailhead(LinkList p)
24 {
25     LinkList a;
26     a = p->next;
27     while(a != NULL)
28     {
29         printf("%d  ",a->data);
30         a = a->next;
31     }
32     printf("\n");
33 }

 

以上是关于建立链表—头插法尾插法—有无头结点的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-2 两数相加(链表的头插法尾插法两个不同长度链表相加减操作的处理方法)

leetcode-2 两数相加(链表的头插法尾插法两个不同长度链表相加减操作的处理方法)

C实现头插法和尾插法来构建链表

单链表的头插法与尾插法代码实现及详解

C实现头插法和尾插法来构建非循环双链表(不带头结点)

头插法尾插法的理解