Advertisement

将两个非递减有序链表合并成一个非递增有序链表。结果链表仍然使用原来的存储空间。

阅读量:

(2)将两个按照非递减顺序排列的有序链表整合为一个按照非递增顺序排列的有序链表。要求最终生成的链表仍需使用原有两个链表所占用的存储空间,不得额外申请其他存储区域。链表中允许存在重复的数据元素。
[题目分析]
新生成的链表通过头指针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(Linklist &L)//&L可以直接

全部评论 (0)

还没有任何评论哟~