#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 Getlist(Sqlist L, int i, Elemtype& e);//顺序表取值
Status Locatelist(Sqlist L, Elemtype e);//顺序表查找值
Status Insertlist(Sqlist& L, Elemtype e, int m);//顺序表插入值
Status Mergelist(Sqlist& La, Sqlist Lb);//将所有在线性表Lb中但是不在La中的元素插入到La中
Status Printlist(Sqlist L);//顺序表打印
int main(void)
{
Sqlist La, Lb;
Initlist(La);
Initlist(Lb);
int a = 0;
int b = 0;
cout << "输入创建顺序表La的长度:";
cin >> a;
Createlist(La, a);
cout << "输入创建顺序表Lb的长度:";
cin >> b;
Createlist(Lb, b);
Mergelist(La, Lb);
Printlist(La);
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 Getlist(Sqlist L, int i, Elemtype& e)//顺序表取值
{
if (i<1 || i>L.length) return ERROR;
e = L.elem[i - 1];
return OK;
}
Status Locatelist(Sqlist L, Elemtype e)//顺序表查找值
{
for (int i = 0; i < L.length; i++)
{
if (L.elem[i] == e) return i + 1;
}
return ERROR;//不在L中返回O
}
Status Insertlist(Sqlist& L, Elemtype e, int m)//顺序表插入值
{
if (m<1 || m>(L.length + 1)) return ERROR;
if (L.length == MAXSIZE) return ERROR;
for (int i = L.length-1; i >= m - 1; i--)
{
L.elem[i + 1] = L.elem[i];
}
L.elem[m - 1] = e;
++L.length;
return OK;
}
Status Mergelist(Sqlist& La, Sqlist Lb)//将所有在线性表Lb中但是不在La中的元素插入到La中
{
int m = La.length;
int n = Lb.length;
Elemtype e;
for (int i = 1; i <= n; i++)
{
Getlist(Lb, i, e);//将Lb中的元素赋值给元素k
if (!Locatelist(La, e))//判断在La中能否查找到Lb的元素k(不能查找到)
{
Insertlist(La,e,++m);//在La尾部插入Lb的元素k
}
}
return OK;
}
Status Printlist(Sqlist L)//顺序表打印
{
cout << "顺序表的值顺序输出为:";
for (int i = 0; i < L.length; i++)
{
cout << L.elem[i] << " ";
}
return OK;
}

最新文章

  1. TMS320F28027/26/23/22/21/20芯片解密单片机破解原理!
  2. Sql Server系列:自定义函数
  3. 第二章 jQuery数组和字符串
  4. Hark的数据结构与算法练习之臭皮匠排序
  5. Wireshark抓包实例分析TCP重复ACK与乱序
  6. 【M20】协助完成“返回值优化(RVO)”
  7. C# Json反序列化处理
  8. Populating Next Right Pointers in Each Node,Populating Next Right Pointers in Each Node II
  9. android doGet和doPost
  10. Objective-C与Swift下的自定义打印函数(Debug和Release)
  11. ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)
  12. Linux 系统裁剪笔记 软盘2
  13. Jmeter(二十六)_数据驱动测试
  14. Python学习笔记十一
  15. hive 调优手段
  16. freemarker中的null异常处理以及!与??的使用(转)
  17. viso-实现文本编辑
  18. pandas 里面对nan的判断
  19. SQL日期和时间函数
  20. Nginx Configuration 免费HTTPS加密证书

热门文章

  1. mybatis面试资料
  2. vue2/vue3+eslint文件格式化
  3. MapReduce原理——Shuffle机制
  4. Kubernetes--Pod节点选择器nodeSelector(标签)
  5. springboot+mybatis实现增删改查
  6. notepad++解决粘贴复制代码行数问题
  7. docker+react+nginx部署
  8. Docker CLI docker attach 常用命令
  9. K8S群集调度器
  10. 基于winds10 安装docker 踩坑记录