2024/04/29号练习
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。
函数接口定义:
List Merge( List L1, List L2 );
其中List结构定义如下:
typedef struct Node *PtrToNode;
struct Node {
ElementType Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */
L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的带头结点的链表头指针。
1 List Merge(List L1,List L2){ 2 List L,head; 3 L=head=(List)malloc(sizeof(struct Node)); 4 if(!L1->Next && !L2->Next){ 5 L->Next=NULL; 6 return L; 7 } 8 List i1=L1; 9 List i2=L2; 10 L1=L1->Next; 11 L2=L2->Next; 12 i1->Next=NULL; 13 i2->Next=NULL; 14 if(L1->Data<L2->Data){ 15 L->Next=L1; 16 L1=L1->Next; 17 L=L->Next; 18 } 19 else{ 20 L->Next=L2; 21 L2=L2->Next; 22 L=L->Next; 23 } 24 while(L1||L2){ 25 if(L1&&L2){ 26 if(L1->Data<L2->Data){ 27 L->Next=L1; 28 L1=L1->Next; 29 }else{ 30 L->Next=L2; 31 L2=L2->Next; 32 } 33 } 34 else if(!L1){ 35 L->Next=L2; 36 L2=L2->Next; 37 } 38 else if(!L2){ 39 L->Next=L1; 40 L1=L1->Next; 41 } 42 L=L->Next; 43 L->Next=NULL; 44 } 45 return head; 46 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?