#include<stdio.h>
#include<stdlib.h>
#define initsize 20
typedef struct{
int length;
int maxsize;
int *data;
}list;
void initlist(list &L){
L.data=(int*)malloc(initsize*sizeof(int));
L.length=0;
L.maxsize=initsize;
}
void input(list &L){
printf("输入你要创建的顺序表的长度:");
scanf("%d",&L.length);
printf("输入该顺序表中的元素:");
for(int i=0;i<L.length;i++)
scanf("%d",&L.data[i]);
}
void increase(list &L){
int len;
int *p=L.data;
printf("输入你要增加的顺序表的长度:");
scanf("%d",&len);
L.data=(int *)malloc((L.maxsize+len)*sizeof(int));
for(int i=0;i<L.length;i++){
L.data[i]=p[i];
L.maxsize=L.maxsize+len;
}
free(p);
}
bool insert(list &L){
int i,e;
printf("输入要插入顺序表的元素和元素位置:");
scanf("%d %d",&e,&i);
if(i<1 || i>L.length+1) return 0;
if(L.length>L.maxsize) return 0;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
printf("插入的元素是%d,插入的位置是%d\n",e,i);
}
bool deleteelem(list &L){
int i,e;
printf("输入要删除的元素位置:");
scanf("%d",&i);
if(i<1 || i>L.length+1) return 0;
if(!L.data) return 0;
e=L.data[i-1];
for(int j=i;j<=L.length;j++){
L.data[j-1]=L.data[j];
}
L.length--;
printf("删除的元素是%d,位置是%d\n",e,i);
return 1;
}
bool getelem(list &L){
int i;
printf("想要找第几个元素:");
scanf("%d",&i) ;
if(i<1 || i>L.length+1){
printf("失败");
return 0;
}
printf("第%d个元素是%d\n",i,L.data[i-1]);
return 1;
}
bool locate(list &L){
int e,k=1;
printf("输入你要查找的数");
scanf("%d",&e);
for(int i=0;i<L.length;i++)
{
if(L.data[i]==e)
{
printf("您要查找是第%d个元素\n",i+1);
k=0;
break;
}
}
if(k) printf("查找失败");
}
bool print(list &L){
if(!L.data) return 0;
printf("顺序表:");
for(int i=0;i<L.length;i++)
{
printf("%d ",L.data[i]);
}
printf("\n");
}
int main()
{
list(L);
initlist(L);
input(L);
print(L);
increase(L);
insert(L);
print(L);
deleteelem(L);
print(L);
getelem(L);
locate(L);
return 0;
}
该代码的算法描述怎么写?