顺序表C++代码:
#include<stdio.h>
#include<stdlib.h>
#define a 10
#define b 10
typedef struct{
int *elem;
int length;
int listsize;
}SqList;
int InitList(SqList &L)
{
L.elem=(int *)malloc(a*sizeof(int));
if(L.elem==0)
{
return -1;
}
L.length=0;
L.listsize=a;
return 0;
}
int Print(SqList L)
{
int i;
printf("打印顺序表:");
for(i=0;i<L.length;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
printf("\n");
return 0;
}
int CreatList1(SqList &L)
{
int n;
printf("请输入将要创建的顺序表的大小n:");
scanf("%d",&n); //创建多少个数值
if(n>L.listsize) //为顺序表增加到存储空间为n
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+n-a)*sizeof(int));
if(!newbase)
{
return -1;
}
L.elem=newbase;
L.listsize=n;
L.length=n;
}
if(n<1)
{
return -1;
}
int i;
printf("请输入n个数值:");
for(i=0;i<n;i++)
{
L.length++;
scanf("%d",&L.elem[i]);
}
Print(L);
return 0;
}
int InsertList(SqList &L,int n,int e)
{
if(n<1||n>L.length+1)
{
return -1;
}
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+1)*sizeof(int));
if(newbase==0)
{
return -1;
}
L.elem=newbase;
L.listsize=L.listsize+1;
L.length+=1;
}
L.length+=1;
int i;
for(i=L.length-1;i>=n;i--)
{
L.elem[i]=L.elem[i-1];
}
L.elem[n-1]=e;
Print(L);
return 0;
}
int DeleteList(SqList &L,int n)
{
if(n>L.length||n<1)
{
return -1;
}
int i;
for(i=n-1;i<L.length;i++)
{
L.elem[i]=L.elem[i+1];
}
L.length--;
Print(L);
return 0;
}
int PaixuList(SqList &L)
{
int i,j;
for(i=0;i<L.length;i++)
{
int min=L.elem[i];
for(j=i;j<L.length;j++)
{
if(L.elem[i]>L.elem[j])
{
L.elem[i]=L.elem[j];
L.elem[j]=min;
min=L.elem[i];
}
}
}
return 0;
}
int MergeList(SqList L,SqList M,SqList &C)
{
int i=0,j=0;
int x=0;
C.elem=(int *)malloc((L.listsize+M.listsize)*sizeof(int));
if(C.elem==0)
{
return -1;
}
PaixuList(L);
PaixuList(M);
C.listsize=M.listsize+L.listsize;
C.length=M.length+L.length;
while(i!=L.length||j!=M.length)
{
if(L.elem[i]>M.elem[j])
{
C.elem[x++]=M.elem[j++];
}
else
{
C.elem[x++]=L.elem[i++];
}
}
if(j!=M.length)
{
for(;j<M.length;j++)
{
C.elem[x++]=M.elem[j++];
}
}
if(i!=L.length)
{
for(;i<L.length;i++)
{
C.elem[x++]=L.elem[i++];
}
}
Print(C);
return 0;
}
int main()
{
SqList L;
InitList(L);
CreatList1(L);
int n,e;
printf("请输入要插入的位置与数值:");
scanf("%d%d",&n,&e);
InsertList(L,n,e);
printf("请输入要删除的位置:");
scanf("%d",&n);
DeleteList(L,n);
SqList M;
SqList C;
InitList(M);
CreatList1(M);
MergeList(L,M,C);
return 0;
}