数据结构与算法:合并两个有序链表
首先,我们需要创建一个新的链表来存储合并后的结果。我们可以使用三个指针分别指向L1、L2和新链表的当前结点。然后,通过比较L1和L2当前结点的值,将较小的值插入到新链表中,并更新对应的指针。直到其中一个链表遍历完毕,我们将另一个链表剩余的结点直接插入新链表的末尾。最后,返回新链表的头指针即可。\n\n具体实现如下:\n\nList Merge( List L1, List L2 )\n{\n PtrToNode p1 = L1->Next;\n PtrToNode p2 = L2->Next;\n PtrToNode p = NULL;\n PtrToNode head = NULL;\n \n if(p1 == NULL)\n return L2;\n if(p2 == NULL)\n return L1;\n \n head = (PtrToNode)malloc(sizeof(struct Node));\n head->Next = NULL;\n p = head;\n \n while(p1 != NULL && p2 != NULL)\n {\n if(p1->Data <= p2->Data)\n {\n p->Next = p1;\n p1 = p1->Next;\n }\n else\n {\n p->Next = p2;\n p2 = p2->Next;\n }\n p = p->Next;\n }\n \n if(p1 != NULL)\n p->Next = p1;\n if(p2 != NULL)\n p->Next = p2;\n \n L1->Next = NULL;\n L2->Next = NULL;\n return head;\n}
原文地址: https://www.cveoy.top/t/topic/giUN 著作权归作者所有。请勿转载和采集!