递增顺序表插入
问题描述
【问题描述】
设有递增有序顺序表,实现其插入元素后依然有序。
【输入形式】
第一行输入一个N(N不大于100);
第二行输入N个整数(假设输入序列按照递增顺序,以空格分隔);
第三行输入一个整数M(欲插入数据);
【输出形式】
输出插入M后的顺序表。
【样例输入】
5
12 25 35 98 125
77
【样例输出】
12 25 35 77 98 125
程序设计
#include<stdio.h>
#include<malloc.h>
#define MAX 10
#define IN 10
typedef struct List{
int *data;
int len;
int size;
}List,*PList;
int Init(PList L){
L->data=(int *)malloc(sizeof(int)*MAX);
L->len=0;
L->size=MAX;
return 1;
}
int Create(PList L){
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&L->data[i]);
L->len++;
}
return 1;
}
int Print(PList L){
int i;
for(i=0;i<L->len;i++){
printf("%d ",L->data[i]);
}
printf("\n");
return 1;
}
int Insert(PList L){
int m,i;
scanf("%d",&m);
while(L->len==L->size){
L->data=(int *)realloc(L->data,(L->size+IN)*sizeof(int));
L->size+=IN;
}
for(i=L->len-1;i>=0&&L->data[i]>m;i--){
L->data[i+1]=L->data[i];
}
L->data[i+1]=m;
L->len++;
return 1;
}
int main(){
List L;
Init(&L);
Create(&L);
Insert(&L);
Print(&L);
return 0;
}