main
蒋婷湘 1 year ago
parent cebc726ebf
commit 0887821949

130
4.cpp

@ -0,0 +1,130 @@
#include<stdio.h>
#include<stdlib.h>
#define list_init_size 100
#define listincrement 10
#define ok 1
typedef int elemtype;
typedef int status;
typedef struct
{
elemtype *elem;
int length;
int listsize;
}sqlist;
status initlist(sqlist &l)//构造空线性表
{
l.elem=(elemtype * )malloc(list_init_size*sizeof(elemtype));
l.listsize=list_init_size;
l.length=0;
return ok;
}
status listlength(sqlist l)//得到元素的个数
{
return l.length;
}
int getelem(sqlist l,int i,elemtype &e)//得到数值
{
if(i<1||i>l.length)
{
printf("不合法");
return 0;
}
e=l.elem[i-1];
return ok;
}
status listinsert(sqlist &l,int i,elemtype e)//插入
{
elemtype *p,*q;
q=&(l.elem[i-1]);
for(p=&(l.elem[l.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++l.length;
return ok;
}
void listprint(sqlist l)//输出
{
int i;
for(i=0;i<l.length;i++)
printf("%d ",l.elem[i]);
printf("\n");
}
void mergelist(sqlist la,sqlist lb,sqlist &lc)
{
int i,j,k,ai,bj;
initlist(lc);
i=j=1;
k=0;
la.length=listlength(la);
lb.length=listlength(lb);
while((i<=la.length)&&(j<=lb.length))
{
getelem(la,i,ai);
getelem(lb,j,bj);
if(ai<=bj)
{
listinsert(lc,++k,ai);
++i;
}
else
{
listinsert(lc,++k,bj);
++j;
}
}
while(i<=la.length)
{
getelem(la,i++,ai);
listinsert(lc,++k,ai);
}
while(j<=lb.length)
{
getelem(lb,j++,bj);
listinsert(lc,++k,bj);
}
}
int main()
{
sqlist La,Lb,Lc;
int i,j;
elemtype x;
initlist(La);
printf("请输入La的长度 ");
scanf("%d",&i);
printf("请输入La中的元素");
for(j=1;j<=i;j++)
{
scanf("%d",&x);
listinsert(La,j,x);
}
printf("输出La中的元素 ");
listprint(La);
initlist(Lb);
printf("\n请输入Lb的长度 ");
scanf("%d",&j);
printf("请输入Lb中的元素");
for(i=1;i<=j;i++)
{
scanf("%d",&x);
listinsert(Lb,i,x);
}
printf("输出Lb中的元素 ");
listprint(Lb);
mergelist(La,Lb,Lc);
printf("\n输出合并后的顺序表Lc: ");
listprint(Lc);
return 0;
}
Loading…
Cancel
Save