C++实现有序表--顺序表的合并操作代码
#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;
}
C++实现有序表--顺序表的合并操作代码的更多相关文章
- 【数据结构】线性表&&顺序表详解和代码实例
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 预备知识 1.0 什么是线性表? 线性表(List)是零个或者多个数据元素的有限序列. 首先它是一个序列.里面的元素是有顺 ...
- 线性表——顺序表的实现与讲解(C++描述)
线性表 引言 新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这 ...
- C语言 线性表 顺序表结构 实现
一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...
- JAVA实现具有迭代器的线性表(顺序表)
1,先了解下JAVA类库中的迭代器:JAVA提供了两种基本类型的迭代器,分别用两个接口来表示:Iterator<T>,ListIterator<T>.其中,Iterator&l ...
- SDUT OJ 顺序表应用5:有序顺序表归并
顺序表应用5:有序顺序表归并 Time Limit: 100 ms Memory Limit: 880 KiB Submit Statistic Discuss Problem Description ...
- 顺序表应用5:有序顺序表归并(SDUT 3329)
Problem Description 已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A.B表里所有元素,并且C表仍然保持有序. Input ...
- C++ 顺序表
C++ 顺序表 /***1顺序表1.必做题 编写程序建立一个数续表,并逐个输出顺序表中所有数据元素的值.编写主函数测试结果. 编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素x. 如果存在,返 ...
- 数据结构实验1:C++实现静态顺序表类
写了3个多小时,还是太慢了.太菜了! 图1 程序运行演示截图1 实验1 1.1 实验目的 熟练掌握线性表的顺序存储结构. 熟练掌握顺序表的有关算法设计. 根据具体问题的需要,设计出合理的表示数据的顺序 ...
- c语言进阶13-线性表之顺序表
一. ACM算法:顺序表的查找 顺序表的查找指获取顺序表的第i个元素.对于线性表的顺序存储结构来说,如果我们要实现获取元素的操作(GetElem),即将线性表L中的第i个位置元素值返回.就程序而言,只 ...
- java实现顺序表、链表、栈 (x)->{持续更新}
1.java实现节点 /** * 节点 * @luminous-xin * @param <T> */ public class Node<T> { T data; Node& ...
随机推荐
- 如何写出不可维护的Vue代码
前言 不止一次接手过复杂业务功能模块,开端总是深陷其中难以自拔,无数个深夜抚摸着头皮在内心暗暗咒骂. 相信你也有过类似的经历,面对复杂的业务逻辑,看代码俩小时,写代码五分钟,没有点胆识和谋略都不敢下手 ...
- 不是用第三方插件,用JS 解析 excel 文件
参考:https://juejin.cn/post/7154395040507232264 excel 表格文件到底是什么 首先要解析 excel 文件,得先了解他是如何存储数据的,经过我百般搜索,终 ...
- 苹果App 上架 app store 提示 “一张或多张屏幕快照的尺寸存在错误“
获取预览图的方式有两种:第一种是用真机运行然后截图获取:另一种是用模拟器运行然后截图获取. 先说说第一种获取方式:app运行在5.5英寸(6+)的手机上,截取屏幕快照.在上传时会报错:"一张 ...
- web基础(3):CSS样式
chapter4 CSS样式 html是网页的内容和结构:CSS是网页的样式.内容和样式相分离,便于修改样式. CSS cascading style sheets 层叠样式表.一个内容上面可以添加多 ...
- java 自定义注解与示例
自定义注解 @Target(value = {ElementType.METHOD})// 使用范围:方法 @Retention(RetentionPolicy.RUNTIME)// 作用域:运行时有 ...
- git仓库搭建及免密使用
- pod init 失败
问题: pod init 失败,报错如下: shenheping@shenhepingdeMacBook-Pro-2 iCar % pod init Ignoring ffi-1.13.1 becau ...
- 用swift开发framework时采用OC混编的解决方案
随着swift ABI的稳定,越来越多的开发者开始使用swift语言开发项目,但是由于大部分工具库也还是使用OC写的,因此我们不得不需要在项目中采用swift与oc混编. 在开发app项目时,swif ...
- 《Makefile中传递宏定义到源文件》
Makefile中定义的变量无法直接传递到头文件中,因为头文件是在预编译阶段处理的,而Makefile中的变量是在编译阶段处理的. 如果需要在头文件中使用Makefile中定义的变量,可以在头文件中使 ...
- MxDraw云图平台 2021.10.28更新,H5在线CAD,网页CAD,网页浏览编辑DWG
1. 增加转换CAD文件的outpath参数设置,设置输出文件路径2. 修改转换程序,在 windows server 2010上,没有buf,距到中文路径的文件 ,转换会失败问题3. 修改宋体字体显 ...