码迷,mamicode.com
首页 > 其他好文 > 详细

用头插法合并单链表

时间:2017-10-19 14:58:40      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:col   null   scanf   合并   lis   eof   list   void   struct   

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef struct Node
 4 {
 5     int a;
 6     struct Node *next;
 7 }Node,*list;
 8 void j(list L);//头插法
 9 list hb(list LA,list LB); //合并单链表
10 int main()
11 {
12     list A,B,C;
13     A=(list)malloc(sizeof(Node));
14     B=(list)malloc(sizeof(Node));
15 
16     A->next=NULL;
17     B->next=NULL;
18 
19     printf("输入链表A:");
20     j(A);
21 
22     printf("输入链表B:");
23     j(B);
24     printf("合并后:");
25        C=(list)malloc(sizeof(Node));
26     C->next=NULL;
27     C=hb(A,B);
28     C=C->next;
29     while(C!=NULL)
30     {
31 
32         printf("%d ",C->a);
33         C=C->next;
34 
35     }
36     printf("\n");
37     return 0;
38 }
39 void j(list L)//头插法
40 {
41     list s;
42     int c;
43     int f=1;
44     while(f)
45     {
46         scanf("%d",&c);
47         if(c!=0)
48         {
49             s=(list)malloc(sizeof(Node));
50             s->a=c;
51             s->next=L->next;
52             L->next=s;
53         }
54         else
55             f=0;
56     }
57 }
58 
59 list hb(list A,list B)//合并两个链表
60 {
61     Node *q,*b,*r;
62     list C;
63     q=A->next;
64     b=B->next;
65     C=A;
66     C->next=NULL;
67     r=C;
68     while(q!=NULL&&b!=NULL)
69     {
70         if(q->a>=b->a)
71         {
72             r->next=q;
73             r=q;
74             q=q->next;
75         }
76         else
77         {
78             r->next=b;
79             r=b;
80             b=b->next;
81         }
82     }
83     if(q)
84         r->next=q;
85     else
86         r->next=b;
87     free(B);
88     return C;
89 }

 

用头插法合并单链表

标签:col   null   scanf   合并   lis   eof   list   void   struct   

原文地址:http://www.cnblogs.com/a595452248/p/7692174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!