运行截图

#include <stdio.h>
#define MAX 255
#define DataType int
typedef struct List
{
DataType data[MAX];
int last;
}list;
void output(list L);
list init_list(list L)
{
L.last=0;
return L;
}
/*
list insert(list L,DataType x) //尾插
{
L.data[L.last]=x;
L.last++;
return L;
}
*/
list insert(list L,DataType x)//插入到第一个比x大的数前面 ,没有的话就插在最后面
{
int i,j,p=L.last;
for(i=0; i<L.last; i++)
{
if(L.data[i]>x)
{
p=i;
for(j=L.last; j>i; j--)
{
L.data[j]=L.data[j-1];
}
break;
}
}
L.data[p]=x;
L.last++;
return L;
}
list insert_i(list L,int i,DataType x)//插入到第i个位置
{
if(i>L.last)
{
printf("Index Error.\n");
}
else if(L.last>MAX)
{
printf("List was full.\n");
}
else
{
for(int j=L.last; j>i; j--)
{
L.data[j]=L.data[j-1];
}
L.data[i]=x;
L.last++;
}
return L;
}
void output(list L)
{
for(int i=0; i<L.last; i++)
{
printf("%d ",L.data[i]);
}
printf("\n");
}
list Delete(list L,int i)
{
for(int j=i; j<L.last; j++)
{
L.data[j]=L.data[j+1];
}
L.last--;
return L;
}
int search(list L,DataType x)
{
for(int i=0; i<L.last; i++)
{
if(L.data[i]==x)
{
return i;
}
}
return -1;
}
list modifly(list L,int index,DataType x)
{
L.data[index]=x;
return L;
}
list merge_AB_to_A(list LA,list LB)
{
for(int i=0; i<LB.last; i++)
{
LA=insert(LA,LB.data[i]);
}
return LA;
}
list merge_AB_to_C(list La,list Lb,list Lc)
{
int ap=0,bp=0;
for(int j=0; j<La.last+ Lb.last; j++)
{
if(ap== La.last)
{
Lc.data[Lc.last++]=Lb.data[bp++];
continue;
}
if(bp== Lb.last)
{
Lc.data[Lc.last++]=La.data[ap++];
continue;
}
if(La.data[ap]<=Lb.data[bp]) Lc.data[Lc.last++]=La.data[ap++];
else Lc.data[Lc.last++]=Lb.data[bp++];
}
return Lc;
}
int main()
{
list La,Lb,Lc;
La=init_list(La);
Lb=init_list(Lb);
Lc=init_list(Lc);
printf("L.last:%d\n",La.last);
printf("L.last:%d\n",Lb.last);
printf("L.last:%d\n",Lc.last);
La=insert(La,1);
La=insert(La,3);
La=insert(La,5);
La=insert(La,7);
La=insert(La,9);
Lb=insert(Lb,2);
Lb=insert(Lb,4);
Lb=insert(Lb,6);
Lb=insert(Lb,8);
Lb=insert(Lb,10);
printf("La:");
output(La);
printf("Lb:");
output(Lb);
La=Delete(La,0);
printf("删除La的第1个元素:");
output(La);
int num=6;
//printf("输入一个数:");
//scanf("%d",&num);
int p=search(Lb,num);
if(p>=0)
{
printf("删除%d并输出删除后的Lb:",num);
Lb=Delete(Lb,p);
output(Lb);
}
Lc=merge_AB_to_C(La,Lb,Lc);
//Lc=merge_AB_to_A(La,Lb);
printf("合并后的Lc:");
output(Lc);
return 0;
}
版权声明:本文为weixin_44882124原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。