问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

请写出在头指针为La,Lb的两个递减有序的单链表合并为一个递减有序的单链表的算法

发布网友 发布时间:2022-07-21 19:28

我来回答

1个回答

热心网友 时间:2023-10-31 21:47

#include <stdio.h>
#include <stdlib.h>
 
typedef int Elemtype;
typedef struct node {
    Elemtype data;
    struct node *next;
}NODE,*LinkList,*pNode;
 
LinkList GetNewList() {
    pNode head = (pNode)malloc(sizeof(NODE));
    if(head == NULL) return NULL;
    head->data = 0;
    head->next = NULL;
    return head;
}
 
LinkList merge(LinkList LA,LinkList LB) {
    pNode a,b,c,head;
    a = LA;
    b = LB;
    c = head = GetNewList();
    head->data = LA->data + LB->data;
    while(a->next && b->next) {
        c->next = (pNode)malloc(sizeof(NODE));
        if(c->next == NULL) {
            printf("内存分配失败!\n");
            return NULL;
        }
        if(a->next->data >= b->next->data) {
            c->next->data = a->next->data;
            a = a->next;
        }
        else {
            c->next->data = b->next->data;
            b = b->next;
        }
        c = c->next;
    }
    while(a->next) {
        c->next = (pNode)malloc(sizeof(NODE));
        if(c->next == NULL) {
            printf("内存分配失败!\n");
            return NULL;
        }
        c->next->data = a->next->data;
        a = a->next;
        c = c->next;
    }
    while(b->next) {
        c->next = (pNode)malloc(sizeof(NODE));
        if(c->next == NULL) {
            printf("内存分配失败!\n");
            return NULL;
        }
        c->next->data = b->next->data;
        b = b->next;
        c = c->next;
    }
    c->next = NULL;
    return head;
}
 
LinkList Creat(LinkList head,int a[],int n) {
    int i;
    pNode p = head;
    head->data = n;
    for(i = 0; i < n; ++i) {
        p->next = (pNode)malloc(sizeof(NODE));
        if(p->next == NULL) {
            printf("内存分配失败!\n");
            return NULL;
        }
        p->next->data = a[i];
        p = p->next;
    }
    p->next = NULL;
    return head;
}
 
void Show(LinkList head) {
    pNode p = head->next;
    while(p) {
        printf("%d ",p->data);
        p = p->next;
    }
    printf("\n");
}
 
int main( ) {
    Elemtypea[] = {98,89,86,80,76,69,68,54,50,29};
    int m = sizeof(a)/sizeof(a[0]);
    Elemtype b[] = {96,85,74,69,68,67,65,60,58};
    int n = sizeof(b)/sizeof(b[0]);
    LinkList LA = GetNewList();
    LA = Creat(LA,a,m);
    LinkList LB = GetNewList();
    LB = Creat(LB,b,n);
    LinkList LC;
    printf("LA: ");
    Show(LA);
    printf("LB: ");
    Show(LB);
    LC = merge(LA,LB);
    printf("LC: ");
    Show(LC);
    return 0;
}

请写出在头指针为La,Lb的两个递减有序的单链表合并为一个递减有序的单...

b = b-&gt;next; } c = c-&gt;next; } while(a-&gt;next)

...LA、LB,编写一个算法,将两个循环单链表合并为一个循环单链表_百度知 ...

编写好的算法实现将这两个链表合并为新的带有头结点的链表 lc ,使得 lc 的元素仍然是非递增有序排列的序列,如果遇到 la 与 lb 中元素相同,则只取 la 中的元素,去掉 lb 中的元素。已知 la 的元素个数 为 m , lb 的元素个数为 n。循环单链表是单链表的另一种形式,其结构特点链表中最后...

编写算法将两个递增单链表合并成一个递减的线性表

结点链入链表中,同时后移工作指针。由于结果链表是递减的,故使用头插法建立新链表。比较结束后,可能会有一个链表非空,此时用头插法将剩下的结点依次插入新链表中即可。/ void Union_List(LinkList&amp; La,LinkList&amp; Lb){ LNode *r, *pa = La-&gt;next, *pb = Lb-&gt;next; //pa,pb分别...

C语言 有两个单链表LA和LB,其元素均为非递减有序排列,编写一个算法。将...

*LinkList,*pNode;LinkList GetNewList() {pNode head = (pNode)malloc(sizeof(NODE));if(head == NULL) return NULL;head-&gt;data = 0;head-&gt;next = NULL;return head;

设计一个算法,将两个递增链表La、Lb合并成一个递增链表Lc。

//设计一个算法,将两个递增链表La、Lb合并成一个递增链表Lc;La,Lb,Lc均为带头结点的链表 include&lt;stdio.h&gt; typedef int datatype;struct PNode { datatype data; //定义链表中结点的数据域,DATATYPE为数据类型 struct PNode *next; //定义链表中结点的指针域 };typedef struct PNode ...

合并两个有序链表【递归、迭代】

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1-&gt;2-&gt;4, 1-&gt;3-&gt;4 输出:1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4 我们可以递归地定义在两个链表上进行合并(merge)操作的结果,如下所示(在不考虑空列表的情况下):也就是说,我们取两个列表...

数据结构单链表之合并两个已排序的链表

例如如果第一个链表a是5-&gt;10-&gt;15而另一个链表b是2-&gt;3-&gt;20,那么SortedMerge()应该返回一个指向合并链表2-&gt;头节点的指针3-&gt;5-&gt;10-&gt;15-&gt;20。有很多情况需要处理:a或b可能为空,在处理过程中a或b可能先用完,最后出现结果列表开始为空,构建的问题它在经历'a'和'b'时向上。方法一(使用...

单链表和循环链表操作用什么不一样?

设有两个链表La=(a1,a2,…,an)和Lb=(b1,b2,…bm),讨论如下问题:(1)La、Lb都是带头指针的单链表,如何实现将Lb接在La之后?时间复杂度是多少?解答:先从La的头结点开始把指针移动到单链表的最后一个结点,即移动了La长度的结点数目,最后把Lb接在La之后,因此时间复杂度是O(n)...

单链表的运算之建立单链表

② 具体算法实现 LinkList CreatListR(void) {//返回单链表的头指针 char ch; LinkList head;//头指针 ListNode *s *r; //工作指针 head=NULL; //链表开始为空 r=NULL;//尾指针初值为空 ch=getchar(); //读入第 个字符 while(ch!= \n ){ s=(L...

数据结构作业

void Length2(int L) { int i=0, p=nodepool[L].next; while(p) { i++; p=nodepool[p].next; } nodepool[L].data=i; } 2.8 假设有两个按元素值递增有序排列的线性表A和B,均以单链表①作存储结构,试编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
新疆面肺子有哪些具体的做法? 合肥的百盛、鼓楼还有元一时代广场为什么都把crocs的专柜撤了? 五花肉烤出油热量还高吗 五花肉热量高吗? 我的路由器无线网被我不小心关了,现在我想打开怎么办??? 路由器被我不小心关掉了怎么办? 想知道: 孝感市 从云梦县到东山头街怎么坐公交 QQ三国改造装备,要用几个改造宝石才会百分百成功? 谁的射门精度最高 吃减肥药配合什么维生素能减少副作用? showla(秀拉)服饰网是不是骗子? SHOWLA是什么品牌的减肥产品? 独一无二的猫咪名字 这几个都很不错 明明点送达了,可能当时网络不好,造成了超时,怎么申诉 请问用frontpage能做asp动态网站吗而且只懂一点html frontpage2003能做网站吗 frontpage制作个人网站和企业网站都可以吗? 请问光用frontpage可以做成一个网站吗? 为什么吃完牛肉不能吃橄榄 语文《小英雄雨来》教学反思 我有一枚光绪元宝是白铜的,湖北省造背面有一条龙背面还有英文,能值多少钱? 你好!我要小学毕业了,请给我一个伤感的毕业网名和个性签名! 我就要小学毕业了,求10个超伤感的个性签名,要超伤感的,谢谢大家了 毕业了,求伤感个性签名 200c&#x33A5;等于多少L? 200立方厘米=()升 火车的发展历史是什么? 月末结账时,因为核算错误没有把生产成本金额全部分摊到产成品上,导致生产成本借方有余额,怎么办? 制造费用、生产成本期末有贷方余额该如何调整? 跨年度生产成本有贷方余额怎么处理 show音乐中心的出道舞台 请告诉我这张图片的资料 太阳下山图片 谁有发来 哪有关于太阳下山的图片或FLash 洗冤录Ⅱ的介绍 洗冤录Ⅱ的剧情简介 什么心惊四字成语 我没被封,但是群聊和朋友圈被*使用了,请问怎么解除*?谢谢 被永久限制群聊和朋友圈咋办啊? 宠物狗能当土狗养吗? 帮帮忙,少儿图书馆共运进图书800册,其中绘本故事类和益智类共什473册,绘本故事类和少儿文学类图 怎样写绘本?有会写儿童绘本的朋友吗?请帮帮忙~~ 小熊幼儿行为习惯绘本《帮忙》培养幼儿独立性 互帮互助性格 数学绘本和数学帮帮忙哪套好 俾众周知的读音 俾众周知的拼音 俾众周知的俾什么意思?怎么读? 管理信息系统中“信息技术”与“ 信息系统”的 区别? 周江州指的是 周朝的江州是哪里
  • 焦点

最新推荐

猜你喜欢

热门推荐