下面的程序先构造一个顺序表,输入n个元素。然后输入要插入的元素,插入完成后,该表仍然保持有序。
#include<stdio.h>#include<stdlib.h>
#include<conio.h>
#defineLIST_INIT_SIZE100
structlist
{
int*data;
intlistsize;
intlistlength;
};
intcreate_list(structlist&l);
intinit_list(structlist&l);
intinsert_list(structlist&l);
intdisplay_list(structlist&l);
intmain()
{
structlistsqlist;
create_list(sqlist);
init_list(sqlist);
display_list(sqlist);
insert_list(sqlist);
display_list(sqlist);
return0;
}
intcreate_list(structlist&l)
{
l.data=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(l.data==NULL)
{
printf("allocationfailn");
exit(0);
}
printf("allocationsuccessn");
l.listsize=LIST_INIT_SIZE;
l.listlength=0;
return0;
}
intinit_list(structlist&l)
{
inti;
intn;
printf("pleaseinputthenumberoflists:n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("pleaseinputthe%ddata:n",i);
scanf("%d",&l.data[i]);
l.listlength++;
}
return0;
}
intinsert_list(structlist&l)
{
inti;
intn;
intinsert_place;
printf("pleaseinputthedatatoinsert:n");
scanf("%d",&n);
for(i=0;i<l.listlength;i++)
{
if(n<l.data[i])
{
break;
}
}
insert_place=i;
for(i=l.listlength-1;i>=insert_place;i--)
{
l.data[i+1]=l.data[i];
}
l.data[insert_place]=n;
l.listlength++;
return0;
}
intdisplay_list(structlist&l)
{
inti;
for(i=0;i<l.listlength;i++)
{
printf("%ddatais%dn",i,l.data[i]);
}
return0;
}
运行结果如下,也可以自己跑一下程序,就看到结果了。



