#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct list
{
int *elem;
int nowlength;
int nowsize;
}list;
int addlist(list &l);//创建表
int inlist(list &l,int i,int e);//添加
int deletelist(list &l,int i);//删除
void display(list &l); //显示
void adjustlist(list &l1,list &l2,list &l3);
int main()
{
int *record;
list l1,l2,l3;
int i;
int a,b;
int just;
just=addlist(l1);
just=addlist(l2);
if(just==0)
{
printf("错误!\n");
}
printf("输入1组数字:");
record=l1.elem;
for(i = 0;i < 5;i++)
{
scanf("%d",record);
record++;
l1.nowlength++;
}
printf("输入2组6个数字:");
record=l2.elem;
for(i=0;i<6;i++)
{
scanf("%d",record);
record++;
l2.nowlength++;
}
display(l1);
display(l2);
adjustlist(l1,l2,l3);
display(l3);
return 0;
}
int addlist(list &l)
{
l.elem=(int *)malloc(100*sizeof(int));
if(l.elem==0)
{
return 0;
}
l.nowlength=0;
l.nowsize=100;
return 1;
}
int inlist(list &l,int i,int e)
{
int *q,*p,*nembase;
if(l.nowlength>=l.nowsize)
{
nembase=(int *)realloc(l.elem,(l.nowsize+100)*sizeof(int));
l.elem=nembase;
l.nowsize+=100;;
}
q=l.elem+i-1;
for(p=l.elem+l.nowlength-1;p>=q;p--)
{
*(p+1)=*p;
}
*(p+1)=e;
l.nowlength++;
return 1;
}
int deletelist(list &l,int i)
{
int *p,*q;
int e;
e=*(l.elem+i-1);
for(q=l.elem+i-1;q<=l.elem+l.nowlength-2;q++)
{
*q=*(q+1);
}
l.nowlength--;
return e;
}
void display(list &l)
{
int *record;
int i;
record=l.elem;
for(i=0;i<l.nowlength;i++)
{
printf("%d ",*record);
record++;
}
printf("\n");
}
void adjustlist(list &l1,list &l2,list &l3)
{
int *pl1,*pl2,*pl3;
int *pl1last,*pl2last;
pl1=l1.elem;
pl2=l2.elem;
pl1last=l1.elem+l1.nowlength-1;
pl2last=l2.elem+l2.nowlength-1;
l3.elem=(int *)malloc((l1.nowlength+l2.nowlength)*sizeof(int));
l3.nowlength=l3.nowsize=l1.nowlength+l2.nowlength;
pl3=l3.elem;
while((pl1<pl1last)&&(pl2<pl2last))
{
if(*pl1<*pl2)
{
*pl3=*pl1;
pl1++;
pl3++;
}
else
{
*pl3=*pl2;
pl2++;
pl3++;
}
}
while(pl1<=pl1last)
{
*pl3=*pl1;
pl1++;
pl3++;
}
while(pl2<=pl2last)
{
*pl3=*pl2;
pl2++;
pl3++;
}
}
重学数据结构 并归 算法2.6
最新推荐文章于 2022-02-15 02:18:41 发布