标签:循环 free amp klist nbsp link 归并 lis str
思路:因为A,B链表中元素有序,要使归并后的C也有序,可以每次从A、B中挑出最小的元素插入C的尾部,这样循环插入完成后,C也一定是有序的。
1 struct LinkList{ 2 int data; 3 LinkList *next; 4 } 5 6 void Merge(LinkList *A,LinkList *B,LinkList *&C) 7 { 8 LinkList *p = A->next; // 定义p结点跟踪 A中的结点 9 LinkList *q = B->next; // 定义q结点跟踪 B中的结点 10 11 C = A; 12 C->next = NULL; 13 free(B); 14 15 LinkList *r = C; // 定义一个跟踪结点,永远指向C的终端结点 16 17 while(p!=NULL&&q!=NULL){ 18 if(p->data <= q->data){ 19 r->next = p; 20 p = p->next; 21 r = r->next; 22 }else{ 23 r->next = q; 24 q = q->next; 25 r = r->next; 26 } 27 } 28 29 if(p!=NULL) r->next = p; 30 if(q!=NULL) r->next = q; 31 }
标签:循环 free amp klist nbsp link 归并 lis str
原文地址:https://www.cnblogs.com/ll-10/p/9698815.html