首页 > 其他分享 >线性表A,B顺序存储合并

线性表A,B顺序存储合并

时间:2022-12-23 21:01:21浏览次数:36  
标签:线性表 ++ 合并 elem int length SqList -- 顺序存储

有两张非递增有序的线性表A,B,采用顺序存储结构,两张表合并用c表存,要求C为非递减有序的,然后删除C表中值相同的多余元素。元素类型为整型

输入格式:

第一行输入输入表A的各个元素,以-1结束,中间用空格分隔;第二行输入表B的各个元素,以-1结束,中间用空格分隔。

输出格式:

输出结果为表C的非递减有序序列,中间用英文逗号分隔

代码如下:
#include<iostream>
#define MAX 1000
using namespace std;

typedef struct
{
int* elem;
int length;
}SqList;

SqList input(SqList& s)
{
s.elem = new int[MAX];
s.length = 0;
int a, i = 0;
cin >> a;
while (a != -1)
{
if (i == 0)
{
s.elem[i] = a;
cin >> a;
i++;
continue;
}

if (s.elem[i - 1] != a)
{
s.elem[i] = a;
i++;
}
cin >> a;
}
s.length = i;
return s;
}

void add(SqList& a, SqList& b, SqList& c)
{
if (a.length == 0 || b.length == 0) return;
int i = a.length - 1, j = b.length - 1, k = 0;
c.elem = new int[MAX];
c.length = 0;
while (i >= 0 && j >= 0)
{
if (a.elem[i] == b.elem[j])
{
c.elem[k] = a.elem[i];
i--;
j--;
k++;
}
else if (a.elem[i] < b.elem[j])
{
c.elem[k] = a.elem[i];
i--;
k++;
}
else
{
c.elem[k] = b.elem[j];
j--;
k++;
}
}
    //A表剩余的元素;
while (i >= 0)
{

c.elem[k] = a.elem[i];
i--;
k++;
}
    //B表剩余的元素;
while (j >= 0)
{
c.elem[k] = b.elem[j];
j--;
k++;
}
c.length = k;
}

void print(SqList& c)
{
cout << c.elem[0];
for (int i = 1; i < c.length; i++)
{
cout << "," << c.elem[i];
}
}
int main()
{
SqList A, B, C;
A = input(A);
B = input(B);
add(A, B, C);
print(C);
return 0;
}

 


标签:线性表,++,合并,elem,int,length,SqList,--,顺序存储
From: https://www.cnblogs.com/psh888/p/17001619.html

相关文章

  • 梦幻布丁 启发式合并板子
    //题意:将一段布丁染色,然后有两种操作,操作1将颜色为x的布丁全部染为y,操作2统计当前一共有多少段颜色//思路:将x染色为y可以想到启发式合并,但是注意我们交换大小集合后,有可......
  • 根据名称合并多个.ts视频文件
     copy/b*.tsmynew.tsTS转MP4:ffmpeg命令如下直接转ffmpeg-inew.ts-ccopy-map0:v-map0:aoutput.mp4指定音频流(一般用这个)ffmpeg-inew.ts-ccopy-map......
  • VSCode设置合并行快捷键
      ......
  • 树上启发式合并
    树上问题都是神仙又称\(DSUontree\)前置芝士会重链剖分的思想(就是只会口胡就行)适用范围:我也不知道理论就是对每个结点,暴力统计其子树内的信息只不过在每个结点......
  • 如何在Word表格中拆分或合并单元格?
    我们在使用Word制作表格时,由于表格较为复杂,只是简单的插入行、列并不能满足我们的需要。要做一个完整的表格,很多时候需要将单元格进行拆分或者合并,才能达到我们想要的效果......
  • 利用canvas合并两个海报
    图片1是个海报,图片2是个二维码,把这个二维码镶嵌到图片1的指定位置上functiondrawAndShareImage(opt,cb){if(!opt){console.error('没有图片');return......
  • Python-2个字典根据相同的id合并覆盖为一个字典
    a_list=[{'id':1,'value':11},{'id':2,'value':22},{'id':3,'value':33}]b_list=[{'id':1,'name':'a'},{'id':2,'name':'b......
  • Android官方技术文档翻译——清单合并
    翻译工作耗时费神,如果你觉得本文翻译得还OK,请点击文末的“顶”;如有错讹,敬请指正。谢谢。 这个新的合并工具是gradleandroid插件的0.10版中引入的。截至0.11版本,该gr......
  • 拼接合并PDF文件
    工具:python,PyPDF2安装PyPDF2:pipinstallPyPDF2待合并文件:合并代码:fromPyPDF2importPdfMergermerger=PdfMerger()#将文件名放入列表files=[(st......
  • ☆ 启发式 ☆ 合并! ☆ 分裂! ☆
    我不知道为啥要起这个标题。启发式合并就是一个思想,把小的往大里合。感性理解,就是每次合并一定会使集合大小翻倍,于是复杂度仅多一个\(\log\)。树上启发式合并难维护的......