标签:技术 尾插法 结束 int alt sizeof creat clu node
题目:输入两个递增排序的列表,合并这两个链表使新的链表结点按照递增排序。
代码:
1 #include<stdio.h> 2 #include"malloc.h" 3 typedef struct node 4 { 5 struct node *next; 6 int data; 7 }*ListNode; 8 9 //尾插法创建链表(不带头结点) 10 ListNode creatrList() 11 { 12 ListNode p = (ListNode)malloc(sizeof(ListNode)); 13 ListNode s, q; 14 p->next = NULL; 15 q = p; 16 int x = 0; 17 scanf_s("%d", &x); 18 while (x != -1) 19 { 20 s = (ListNode)malloc(sizeof(ListNode)); 21 s->next = NULL; 22 p->data = x; 23 p->next = s; 24 p = s; 25 scanf_s("%d", &x); 26 } 27 return q; 28 } 29 //合并两个链表 30 ListNode Merge(ListNode AList,ListNode BList) 31 { 32 if (AList->next == NULL) 33 return BList; 34 else if (BList->next == NULL) 35 return AList; 36 ListNode CList = NULL; 37 if (AList->data < BList->data) 38 { 39 CList = AList; 40 CList->next = Merge(AList->next,BList); 41 } 42 else 43 { 44 CList = BList; 45 CList->next = Merge(AList, BList->next); 46 } 47 return CList; 48 } 49 50 int main() 51 { 52 ListNode AList, BList,CList; 53 printf("创建A链表,以-1结束:"); 54 AList = creatrList(); 55 printf("创建B链表,以-1结束:"); 56 BList = creatrList(); 57 CList = Merge(AList, BList); 58 printf("合并后的列表为:"); 59 while (CList->next!=NULL) 60 { 61 printf("%3d",CList->data); 62 CList = CList->next; 63 } 64 printf("\n"); 65 return 0; 66 67 } 68 /* 69 创建A链表,以-1结束:1 2 3 5 6 7 -1 70 创建B链表,以-1结束:8 9 11 14 16 19 21 23 25 27 -1 71 合并后的列表为: 1 2 3 5 6 7 8 9 11 14 16 19 21 23 25 27 72 请按任意键继续. . . 73 74 创建A链表,以-1结束:-1 75 创建B链表,以-1结束:1 2 3 4 5 6 7 8 -1 76 合并后的列表为: 1 2 3 4 5 6 7 8 77 请按任意键继续. . . 78 79 创建A链表,以-1结束:1 2 3 4 5 6 7 8 -1 80 创建B链表,以-1结束:1 2 3 4 5 6 7 8 -1 81 合并后的列表为: 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 82 请按任意键继续. . . 83 84 85 */
标签:技术 尾插法 结束 int alt sizeof creat clu node
原文地址:http://www.cnblogs.com/xyzyj/p/7392395.html