C语⾔顺序表的查和删除操作
#include<stdio.h>
#define MAXSIZE 30
typedef struct {
char data[MAXSIZE];    //定义数组⼤⼩
int length;            //表⽰实际长度
}sqlist;
int initlist(sqlist *L)  //初始化结构体函数
{
L->length=0;
return 0;
}
bool insertlist(sqlist *L,int i,char e)  //插⼊元素  i是插⼊元素的位置  e是插⼊元素的值
{
if(i<1||i>L->length+1||L->length>=MAXSIZE)
return false;
for(int j=L->length;j>=i;--j)
L->data[j]=L->data[j-1];
L->data[i-1]=e;
L->length++;
return true;
}
bool deletelist(sqlist *L,int i,char &e) //插⼊元素  i是删除元素的位置  e是被删除的值
{
if(i<1||i>L->length)
return false;
e=L->data[i-1];
for(int j=i;i<L->length;++i)
L->data[i-1]=L->data[i];
L->length--;
return true;c语言listinsert函数
}
int locateelem(sqlist *L,char e)
{
for(int i=0;i<L->length;++i)
if(L->data[i]==e)
printf("\n%c的位置在:%d    ",e,i+1);
return 0;
}
int printflist(sqlist *L)    //输出数组元素
{
for (int i=0;i<L->length;i++)
printf("%c  ",L->data[i]);
return 0;
}
void main()
{
sqlist L;
char e=0;
initlist(&L);
//初始化表
insertlist(&L,1,'e');
insertlist(&L,1,'d');
insertlist(&L,1,'c');
insertlist(&L,1,'b');
insertlist(&L,1,'a');
printf("顺序表的长度:%d",L.length);
//打印表元素
printf("\n顺序表元素:");
printflist(&L);
//在顺序表的第三个位置插⼊元素
insertlist(&L,3,'h');
printf("\n插⼊后的顺序表元素:");
printflist(&L);  //插⼊
printf("\n删除后的元素表顺序:  ");
deletelist(&L,2,e);    //删除
printflist(&L);
printf("\n被删除的元素: %c    ",e);
locateelem(&L,'c');
}
程序运⾏截图
也可以全⽤引⽤型变量,以在VC++6.0运⾏环境下为例,将每个传参函数定义的指针变量修改为“&”,然后程序中将点“.”改为“->”,以L.length变为L->length,当然有些软件这两个都可以兼容,然后再在主函数中将引⽤符号全部去掉就可以了
PS:有不⾜之处,请⼤家多多指教

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。