题目要求
已知顺序表递增有序,编写一个算法,
将x插入到线性表的适当位置上,以保持线性表的有序性。
代码
#include <stdio.h>
#define M 100
typedef int Etype;
typedef struct{
Etype elem[M];
int last;
}List;
void Input(List *L)
{
int d,i=0;
scanf("%d",&d);
while(d!=-1)
{
L->elem[i]=d;
i++;
scanf("%d",&d);
}
L->last=i-1;
}
void InsList(List *LA,int x)
{
int i,k,temp;
for(i=0;i<=LA->last;i++)
{
if(LA->elem[i]<x)
LA->elem[i]=LA->elem[i];
else
{
k=i;
break;
}
}
for(i=LA->last;i>=k;i--)
{
LA->elem[i+1]=LA->elem[i];
}
LA->elem[k]=x;
LA->last++;
}
void Output(List *LA)
{
int k;
for(k=0;k<=LA->last;k++)
printf("%d ",LA->elem[k]);
}
int main()
{
int x;
List LA;
scanf("%d",&x);
Input(&LA);
InsList(&LA,x);
Output(&LA);
return 0;
}
输入输出实例
输入
22
1 2 12 19 23 29 -1
输出