3. 创建两个存储整数的有序线性表例如LA=(1,3,5,8,10,13)和LB=(4,6,8,11,12,15,20,25),然后将LA和LB归并到新的有序线性表LC=(1,3,4,5,8,10,11,12,13,15,20,25)(相同元素只出现一次,要求使用单向链表)。程序结构如下: typedef struct data { unsigned num; struct data *next; }DataNode; DataNode *CreateList(DataNode *Head)//创建升序线性表 { ………………//输入非0元素创建链表,输入0元素停止 } DataNode *MergeList(DataNode *HeadLA,DataNode *HeadLB,DataNode *HeadLC) { DataNode *pa=HeadLA,*pb=HeadLB,*pnew=NULL,*pend=NULL; while(pa&&pb) { ………… } while(pa) { ………… } while(pb) { ………… } return HeadLC; } void PrintList(DataNode *Head) { ………… } void main() { DataNode *HeadLA=NULL,*HeadLB=NULL,*HeadLC=NULL; HeadLA=CreateList(HeadLA);HeadLB=CreateList(HeadLB); HeadLC=MergeList(HeadLA,HeadLB,HeadLC); PrintList(HeadLC); }
时间: 2023-02-22 12:27:43 浏览: 142
2、 掌握线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度等运算在顺序存储结构和链式存储结构上的实现。
5星 · 资源好评率100%
这是一个实现合并两个有序链表的代码。代码使用了C语言。首先定义了一个结构体DataNode,表示链表的节点,包含了一个整数值和一个指向下一个节点的指针。然后有两个函数,CreateList用于创建有序链表,MergeList用于将两个链表合并成一个新的有序链表。
两个链表的合并是通过两个指针(pa和pb)比较两个链表的节点,选取较小值加入新链表,直到某一个链表遍历结束为止。代码实现了去重的功能,当遇到相同值时,只选择一次。最终返回新链表的头节点。
阅读全文