#include
#include
#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;iscanf("%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;ifree(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;iif(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;iprintf("%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;
}
该代码的算法描述怎么写?
该代码是一个基于顺序表的线性结构的实现,其中包括了以下函数:
initlist: 初始化顺序表,给其动态分配一定大小的内存空间;
input: 给顺序表输入元素,通过 scanf 函数实现;
increase: 增加顺序表的长度,即扩展内存空间;
insert: 向顺序表中插入元素,可以指定插入的位置;
deleteelem: 删除顺序表中的指定位置的元素;
getelem: 获取指定位置的元素;
locate: 查找指定元素在顺序表中的位置;
print: 输出整个顺序表的元素。
在 main 函数中,先调用 initlist 函数初始化顺序表,再通过 input 函数输入顺序表中的元素,并输出顺序表;然后调用 increase 函数增加顺序表的长度,并输出顺序表;接着调用 insert 函数向顺序表中插入元素,并输出顺序表;然后调用 deleteelem 函数删除顺序表中的元素,并输出顺序表;接着调用 getelem 函数获取指定位置的元素;最后调用 locate 函数查找指定元素在顺序表中的位置,若查找失败则输出失败信息。
整个代码的算法描述为:定义了一个结构体 list,其中包含顺序表的长度、最大长度和数据;然后定义了一系列对顺序表进行操作的函数,包括初始化顺序表、输入顺序表中的元素、增加顺序表的长度、向顺序表中插入元素、删除顺序表中的元素、获取指定位置的元素、查找指定元素在顺序表中的位置和输出整个顺序表的元素;最后在 main 函数中调用上述函数,实现对顺序表的各种操作。
答案来自 https://www.wodianping.com/
实现不定长数组的动态增删改查及插入操作?