Advertisement

请实现一种算法:将两个递增有序的链表合并为一个新的递增有序链表,并确保结果链表利用原有存储空间且不出现重复数据

阅读量:

(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)

还没有任何评论哟~