首页 > 编程语言 >C++实现有序表--链表的合并操作代码

C++实现有序表--链表的合并操作代码

时间:2023-01-05 18:44:48浏览次数:37  
标签:Linklist Lb La -- pb C++ next 链表 pa

#include<iostream>
#include<cstdlib>
using namespace std;
#define MAXSIZE 100
#define OK 1
#define ERROR 0
typedef int Elemtype;
typedef int Status;
typedef struct LNode//定义结点
{
Elemtype date;//数据域
struct LNode* next;//地址域
}LNode, * Linklist;
Status InitLinklist(Linklist& L);//初始化链表
Status CreateLinklist(Linklist& L, int i);//创建单链表
Status MergeLinklist(Linklist& La, Linklist& Lb, Linklist& Lc);//归并La和Lb得到Lc
Status PrintLinklist(Linklist L);//在单链表中打印元素
int main(void)
{
int a, b;
a = b = 0;
Linklist La, Lb, Lc;
InitLinklist(La);
InitLinklist(Lb);
InitLinklist(Lc);
cout << "创建链表La的长度为:";
cin >> a;
CreateLinklist(La,a);
PrintLinklist(La);
cout << "创建链表Lb的长度为:";
cin >> b;
CreateLinklist(Lb, b);
PrintLinklist(Lb);
MergeLinklist(La, Lb, Lc);
PrintLinklist(Lc);
return 0;
}
Status InitLinklist(Linklist& L)
{
L = new LNode;
L->next = NULL;
return OK;
}
/*Status CreateLinklist(Linklist& L, int i)
{
LNode* p;
cout << "\n输入单链表的数据为:";
for (int t = 0; t < i; t++)
{
p = new LNode;
cin >> p->date;
p->next = L->next;//前插
L->next = p;
}
return OK;
}*/
Status CreateLinklist(Linklist& L, int i)
{
LNode* p, * r;
r = L;//尾指针r指向头结点
cout << "\n输入单链表的数据为:";
for (int t = 0; t < i; t++)
{
p = new LNode;
cin >> p->date;
p->next = NULL;//尾插法
r->next = p;
r = p;
}
return OK;
}
Status MergeLinklist(Linklist& La, Linklist& Lb, Linklist& Lc)//归并La和Lb得到Lc
{
Lc = La;
LNode* pa, * pb, * pc;
pa = La->next, pb = Lb->next, pc = Lc;
while (pa && pb)//pa,pb都不为空
{
if (pa->date <= pb->date)//pa指向的数据小于或者等于pb指向的数据
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb;//将非空表的剩余段插入到pc
delete Lb;//释放Lb的头结点
return OK;
}
Status PrintLinklist(Linklist L)
{
LNode* p;
p = L->next;
if (L == NULL)
{
cout << "\n表不存在。";
return ERROR;
}
cout << "\n元素为:";
while (p != NULL)
{
cout << p->date << " ";
p = p->next;
}
return OK;
}

标签:Linklist,Lb,La,--,pb,C++,next,链表,pa
From: https://www.cnblogs.com/shidawuyu/p/17028597.html

相关文章

  • JS原型链
    一.构造函数1.对象众所周知,JS是面向对象编程的弱类型语言,对象几乎涵盖了JS的所有----------万物皆对象。那么创建对象的方式有哪些呢?方法一:通常object的代码表现形式......
  • C++静态类成员变量和成员函数
    头文件calculateBufferSize.h#ifndefCALCULATE_BUFFER_SIZE#defineCALCULATE_BUFFER_SIZE#include<mutex>#include<memory>#include<iostream>#include<glm/g......
  • 使用jacoco-maven-plugin生成Java项目代码覆盖率报告
    1.参考资料https://www.cnblogs.com/fnlingnzb-learner/p/10637802.htmlhttps://maven.apache.org/surefire/maven-failsafe-plugin/examples/skipping-tests.html#2.......
  • 标准领航!零数科技参编两项标准正式发布
    2022年12月29日,在中国信息通信研究院可信区块链推进计划(TBI)举办的“第六届可信区块链峰会”上,零数科技参与编写的《政务区块链服务能力评价体系》、《开放许可链能力要求与......
  • 从 Nginx Ingress 窥探云原生网关选型
    作者:魁予现今有越来越多的企业开始采纳云原生理念进行应用架构转型。而K8s和微服务是云原生的两大支柱,随着云原生浪潮而被广泛应用。对多数应用而言,提供对外服务的使命并......
  • EMQX+阿里云飞天洛神云网络 NLB:MQTT 消息亿级并发、千万级吞吐性能达成
    随着物联网技术的发展与各行业数字化进程的推进,全球物联网设备连接规模与日俱增。一个可靠高效的物联网系统需要具备高并发、大吞吐、低时延的数据处理能力,支撑海量物联网数......
  • “强鹰”会议纪要发布,不会停止加息?风险资产恐将承压!
       美联储发布了去年12月的会议纪要,详细揭露了货币政策制定者对经济和加息路径的最新研判,继续展现偏鹰的论调和立场。   纪要显示,美联储官员致力于抗击通货膨胀......
  • bs4解析
    #bs4解析实战importrequestsfrombs4importBeautifulSoupimportreurl='https://www.shicimingju.com/book/sanguoyanyi.html'head={'user-agent':'Mozilla/5......
  • NC20684 wpy的请求
    题目链接题目题目描述“题目名称只是吸引你来做题的啦,其实和题目没什么卵关系:o(* ̄▽ ̄*)o”——历史——殿堂wpy移情别恋啦,他不喜欢spfa了,现在他喜欢使用dij,但是他又发......
  • opencv修改帧数
    #opencv读取视频文件importcv2importmatplotlib.pyplotaspltvc=cv2.VideoCapture('test.mp4')#检测视频打开是否正确ifvc.isOpened():oepn,frame=vc.read()......