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

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

时间:2023-01-05 17:14:19浏览次数:39  
标签:Lb Sqlist La -- C++ int pa 有序 Lc


#include<iostream>
#include<cstdlib>//C++动态分配存储空间
using namespace std;
#define OK 1
#define ERROR 0
#define MAXSIZE 100
typedef int Elemtype;
typedef int Status;
//顺序表的存储结构,结构体类型
typedef struct
{
Elemtype* elem;//动态开辟存储空间
int length;//当前数组的长度
}Sqlist;//顺序表结构类型为Sqlist
Status Initlist(Sqlist& L);//初始化顺序表
Status Createlist(Sqlist& L, int n);//创建顺序表
Status Mergelist(Sqlist La, Sqlist Lb, Sqlist& Lc);//归并La和Lb得到新的顺序有序表Lc
Status Printlist(Sqlist L);//顺序表打印
int main(void)
{
Sqlist La, Lb, Lc;
Initlist(La);
Initlist(Lb);
Initlist(Lc);
int a = 0;
int b = 0;
cout << "输入创建顺序表La的长度:";
cin >> a;
Createlist(La, a);
cout << "输入创建顺序表Lb的长度:";
cin >> b;
Createlist(Lb, b);
Mergelist(La, Lb, Lc);
Printlist(Lc);
return 0;
}
Status Initlist(Sqlist& L)//初始化顺序表
{
L.elem = new Elemtype[MAXSIZE];//为顺序表分配一个数组空间
if (!L.elem) exit(OVERFLOW);
L.length = 0;
return OK;
}
Status Createlist(Sqlist& L, int n)//创建顺序表
{
Elemtype e;
cout << "输入顺序表的数据:";
for (int i = 0; i < n; i++)
{
cin >> e;
L.elem[i] = e;
L.length++;
}
cout << "创建顺序表成功。" << endl;
return OK;
}
Status Mergelist(Sqlist La, Sqlist Lb, Sqlist& Lc)
{
int m = La.length;
int n = Lb.length;
Lc.length = m + n;//新表长度为两个表的长度之和
Lc.elem = new Elemtype[Lc.length];//给新表分配一个数组空间
int* pa, * pb, * pc;
pa = La.elem, pb = Lb.elem, pc = Lc.elem;//指针分别指向三个数组的的首地址
int* pa_last, * pb_last;
pa_last = La.elem + La.length - 1;//pa_last指向La的最后一个元素
pb_last = Lb.elem + Lb.length - 1;//pb_last指向Lb的最后一个元素
while (pa <= pa_last && pb <= pb_last)//都没有达到表位
{
if (*pa <= *pb)//指向La表的所在元素小与或等于指向Lb表的所在元素
{
*pc = *pa;
pc++;
pa++;//*pc++=*pa++;
}
else
{
*pc = *pb;
pc++;
pb++;//*pc++=*pb++;
}
}
while (pa <= pa_last)//La未达到表尾,Lb已到达表尾
{
*pc++ = *pa++;
}
while (pb <= pb_last)//Lb未达到表尾,La已到达表尾
{
*pc++ = *pb++;
}
return OK;
}
Status Printlist(Sqlist L)//顺序表打印
{
cout << "顺序表的值顺序输出为:";
for (int i = 0; i < L.length; i++)
{
cout << L.elem[i] << " ";
}
return OK;
}

标签:Lb,Sqlist,La,--,C++,int,pa,有序,Lc
From: https://www.cnblogs.com/shidawuyu/p/17028138.html

相关文章

  • iperf3使用
    一、iperf3介绍iperf3可以测试网络带宽,二、iperf3安装iper3下载地址:https://iperf.fr/iperf-download.php2.1windows下安装iperf3windows下安装iperf3......
  • WPF-‘_’在Lable中显示为文字的下划线不独立显示的问题。
    一、原因:  ‘_’在WPF中用于表示访问键。二、对策:  建立新样式,并关闭lable对快捷键的自动处理:RecognizesAccessKey="True"=》"False",如下:<!--不对下划......
  • caffe 保存blob值到txt,方便查看和pytorch比较
    在blob.hpp添加函数:voidsave_data_to_txt(conststringpath_txt,boolb_save_shape=true){std::ofstreamfOut(path_txt);if(!fOut)......
  • window下MySQL的压缩包方式安装--单版本或多版本(5.7和8共存)通用
    环境:win11MySQL版本:5.7和8.311.下载MySQL数据库注意:记得查看自己电脑是32位还是64位的,这里下的64位的,64位的电脑可以用32位的包,32位的用64的包可能有问题8版本官网下......
  • 面向对象OOP
    面向对象OOP面向对象什么是面向对象: 是一种编程思想,核心是对象,程序就是一系列对象的集合,程序员负责调度控制这些对象来交互着完成任务: 案例:西天取经 如......
  • F() expressions Django中解决数据竞态条件
    classF¶AnF()objectrepresentsthevalueofamodelfield,transformedvalueofamodelfield,orannotatedcolumn.Itmakesitpossibletorefertomodel......
  • 反射5 - 获取注解信息
    反射获取注解信息什么是ORM?ObjectrelationshipMapping--对象关系映射(数据库关系)类->表类中属性->表的字段类的对象->表中的记录通过注解联系属性与数据......
  • 处理队列消息
    新入门skynet系列视频b站网址https://www.bilibili.com/video/BV19d4y1678X系列博客的大纲在工作线程中,服务队列的消息被不断的取出来处理,并处理。staticvoid*th......
  • (转)ERROR 1045 (HY000): Access denied for user 'root', because password is error
    连接 mycat 出现的错误提示:ERROR1045(HY000):Accessdeniedforuser'root',becausepasswordiserror通过navicat可以连接mycat,但是通过命令的方式连接出出现了上......
  • JavaSE复习
    面向对象面向对象编程(Object-OrientedProgramming/OOP)面向对象编程的本质:以类的方式组织代码,以对象的方式封装数据三大特性:封装、继承、多态从认识论角度考虑......