请实现一种算法:将两个递增有序的链表合并为一个新的递增有序链表,并确保结果链表利用原有存储空间且不出现重复数据
发布时间
阅读量:
阅读量
(1)将两个按升序排列的有序链表整合为一个保持升序排列的有序链表。要求最终生成的链表必须继续使用原有两个链表所占用的存储空间,不得额外申请新的存储区域。合并后的链表中不得出现重复的数据项。
[题目分析]
新生成的链表由头指针Lc进行标识,而pa与pb则分别作为链表La和Lb的操作指针,初始状态下指向各自链表的第一个节点。从第一个节点开始逐一比较,当La与Lb两个链表均未抵达末尾节点时,依次选取其中数值较小的节点,并将其连接至Lc链表的末尾位置。若两个节点数值相等,则仅保留La中的节点,并将Lb中的对应节点移除,以此保证合并后链表中不存在重复元素。当其中一个链表已到达末尾节点时,将另一个尚未处理完的链表中剩余的所有节点依次链接至Lc链表的末尾部分。
#include<stdio.h>
#include<stdlib.h>
//定义存储结构
typedef struct {
int date;//这里为图方便,只以int数据类型为例子
}Date;
typedef struct LNode {
Date elem;
struct LNode *next;
}Lnode ,*Linklist;
//单链表初始化
int InitList(Lin
全部评论 (0)
还没有任何评论哟~
