假设有两个按元素值递增有序排列的带头节点的单链表A和B.试编写算法将A表和B表归并成按一个元素值递减有序(允许值下相同)排列的线性表C,要求利用原表的节点空间存放C

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 01:56:41
假设有两个按元素值递增有序排列的带头节点的单链表A和B.试编写算法将A表和B表归并成按一个元素值递减有序(允许值下相同)排列的线性表C,要求利用原表的节点空间存放C

假设有两个按元素值递增有序排列的带头节点的单链表A和B.试编写算法将A表和B表归并成按一个元素值递减有序(允许值下相同)排列的线性表C,要求利用原表的节点空间存放C
假设有两个按元素值递增有序排列的带头节点的单链表A和B.试编写算法将A表和B表归并成按一个元素值递减有序(允许值下相同)排列的线性表C,要求利用原表的节点空间存放C

假设有两个按元素值递增有序排列的带头节点的单链表A和B.试编写算法将A表和B表归并成按一个元素值递减有序(允许值下相同)排列的线性表C,要求利用原表的节点空间存放C
/* 链表节点 */
typedef struct Node {
    int data;
    struct Node *next;
} Node;

/* 合并两个升序链表为降序链表 */
Node *merge_lists(Node *a, Node *b)
{
    Node *pa = a->next, *pb = b->next, *t;
    
    /* 新链表的头结点使用 a 的头结点 */
    a->next = NULL;
    free(b);  // b 的头结点是不需要的,可以释放掉
    
    while(pa != NULL && pb != NULL) {
        if(pa->data < pb->data) {  // 将 pa 插入新链表头部
            t = pa->next;
            pa->next = a->next;
            a->next = pa;
            pa = t;
        } else {  // 将 pb 插入新链表头部
            t = pb->next;
            pb->next = a->next;
            a->next = pb;
            pb = t;
        }
    }
    
    /* 注:以下两个循环只会执行其中一个 */
    /* 只剩链表 a 的节点 */
    while(pa != NULL) {
        t = pa->next;
        pa->next = a->next;
        a->next = pa;
        pa = t;
    }
    
    /* 只剩链表 b 的节点 */
    while(pb != NULL) {
        t = pb->next;
        pb->next = a->next;
        a->next = pb;
        pb = t;
    }
    
    return a;
}
有问题请指教 :)

假设有两个按元素值递增有序排列的带头节点的单链表A和B.试编写算法将A表和B表归并成按一个元素值递减有序(允许值下相同)排列的线性表C,要求利用原表的节点空间存放C 用c++实现,假设有两个元素递增的有序排列线性表A和B,均以顺序表作存储结构.试编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序)允许值相同排列的线性表C,并要求按原表的 急需数据结构算法:假设有两个元素递增的有序排列线性表A和B,均以单链表作存储结构.试编写算法将A表和B急需数据结构算法C++版:假设有两个元素递增的有序排列线性表A和B,均以单链表作 已知带头结点的单链表L中的结点按整数值递增排列,写一算法,将x结点插入L中,使L仍然有序 数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在要构成一个新的线性表c,c表示a b的交,且c中的元素也递增有序.分别以顺序表和单链式表为存储结构,编写程序 已知两个顺序表A和B分别表示两个集合,其元素递增排列,编写一个函数求出A和B的交集要用简单的c++写啊,刚学不太会啊已知两个整数集合A和B,它们的元素分别依元素值递增有序存放在两个单 设A和B是两个单链表其表中元素递增有序试写一算法将A和B归并成一个按元素值递减有序的单链表C并要求辅助空间为O(1) 麻烦大家帮忙编个程序了已知线性表的元素按递增顺序排列,并以带头节点的单链表作存贮结构,试编写一个删除表中所有值大于min小于max的元素(若表中存在这样的元素)的算法,这个试题目, 有两个顺序表,其元素递增有序,设计一个算法,将这两个表合并到其中一个表中,并保持原表的有序性不变. 二分法查找 C++假设一维数组a[10]中的10个元素是按从小到大的顺序有序排列的,编写程序从a中二分查找出其值等于给定值x的元素,其中查找功能由函数实现.int BinSearch(int R[10],int K,10){ //在有序 已知一个数组中的元素按元素值非递减有序排列,编写一个函数删除数组中多余的值相同的元素 数据结构里面的非递减有序排列是啥意思啊?就是递增排列? 已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素.是单链表 请用C语言编程实现 1.已知线性表LA和LB中的数据元素按值非递增有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递增有序排列.例如,设LA=(3,5,8,11)LB=(2,6,8,9,11,15,20)则L 有限元划分单元越多有什么好处?假设同样是50个单元,三节点的元素和四节点有什么不同? 已知一个顺序表A,其中的元素按值递减有序排列,编写一个函数插入一个元素X后保持该顺序表仍按递减排列写出该提的算法 假设顺序表L中的元素递增有序,设计算法在顺序表中插入元素x,要求插入后仍保持其递增有序特性,并要求时数据结构算法~求过程 从1,2,3,4,5,6,7这七个数字中任取两个奇数和两个偶数,组成没有重复数字的四位数其中奇数的个数为?从3个偶数中取两个 不按有序排列有3种可能4个奇数中取两个 不按有序排列有6种所以3*6*A4取4