#include<bits/stdc++.h>
using namespace std;
#define ElemType int
#define LIST_INIT_SIZE 3//线性表存储空间的初始分配量
#define LISTINCREMENT 1//线性表存储空间的分配增量
typedef struct
{
ElemType *elem;//存储空间的基地址
int length;//当前长度
int listsize;//当前分配的内存容量
}SqList;
/*线性表的初始化*/
bool InitList_Sq(SqList &L)
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));//动态分配内存空间
if(!L.elem) return false;//分配失败
L.length=0;//初始化线性表的长度为0
L.listsize=LIST_INIT_SIZE;//初始化时线性表的总长为默认值100
return true;//成功初始化
}
/*创建一个顺序表*/
void CreateList_Sq(SqList &L)
{
int n;//准备输入元素的个数
int *newbase=NULL;//建立一个空指针
printf("请输入你准备输入的元素个数:");
scanf("%d",&n);
if(L.listsize<n)//顺序表的最大长度和要输入顺序表长度比较
{
while(L.listsize <=n)//进行循环,直到顺序表的长度符合要求
{
/*重新分配内存空间*/
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
L.elem=newbase;
L.listsize+=LISTINCREMENT;//增加存储容量
}
}
printf("请依此输入你的数据:(请以空格分割)\n");
for(int i=0;i<n;i++)//输入数据
scanf("%d",&L.elem[i]);
L.length=n;
}
/*打印顺序表*/
void PrintSqList(SqList &L)
{
int *a;
a=L.elem;
for(int i=0;i<L.length;i++)
printf("%d ",L.elem[i]);
putchar('\n');
}
void MergeList_Sq(SqList &L1,SqList &L2,SqList &L3)
{
int i,j;
int *newbase=NULL;
L3.length=L1.length+L2.length;//第3个顺序表的长度前2个顺序表的长度之和
if(L3.listsize<L3.length)
{
while(L3.listsize <= L3.length)//进行循环,直到顺序表的长度符合要求
{
/*重新分配内存空间*/
newbase=(ElemType*)realloc(L3.elem,(L3.listsize+LISTINCREMENT)*sizeof(ElemType));
L3.elem=newbase;
L3.listsize+=LISTINCREMENT;//增加存储容量
}
}
for(i=0;i<L1.length;i++)//把第1个表赋值给第3个表
L3.elem[i]=L1.elem[i];
for(i=0,j=L1.length;i<L2.length;i++)//把第2个表的赋值给3个表
L3.elem[j++]=L2.elem[i];
}
/*使用sort函数进行排序(需要包含algorithm的头文件此处包含在了bits/stdc++中)*/
void order(SqList &L)
{
sort(L.elem,L.elem+L.length);//默认为升序排序
}
int main()
{
int i;
SqList L[3];
for(i=0;i<2;i++)
{
printf("请输入第%d个线性表:\n",i+1);
InitList_Sq(L[i]);
CreateList_Sq(L[i]);
}
InitList_Sq(L[2]);//初始化第3个顺序表
MergeList_Sq(L[0],L[1],L[2]);//顺序表的合并
order(L[2]);//对合并后的顺序表进行排序
printf("合并后的顺序表为:\n");
PrintSqList(L[2]);//输出合并后的顺序表
/*释放内存空间*/
for(i=0;i<2;i++)
free(L[i].elem);
return 0;
}
顺序表的合并
最新推荐文章于 2023-05-26 11:01:14 发布