数据结构———顺序表的查找、删除、和插入
程序员文章站
2022-03-22 19:21:33
...
查找: 假设有7个元素
1,定义顺序表的结构体
2。与顺序表的元素一一比较、若一致,则返回位置,不一致,返回0.
# define maxsize 100
typedef struct{
int data[maxsize];
int length;
}Sqlist;
int find(Sqlist L;int e)
{
int i;
for(i=0;i<length;++i)
{
if(e==L.data[i]);
return i;
}
return 0;
}
插入(插入有序的顺序表):1。定义顺序表 2。找到某个元素的位置 3.把位置以后的元素全部向后移动一位 4。把新元素插入位置 5.顺序表的长度+1
# define maxsize 100
typedef struct{
int data[maxsize];
int length;
}Sqlist;
int find(Sqlist L,int e)
{
int i;
for(i=0;i<length;++i)
{
if(e<L.data[i]);
return i;
}
return i;//如果没有找到,因为++i 所以返回后面的一个位置
}
int sertelem(Sqlist & L,int i,int e)//i是位置,e是元素
{
if(i<0||i>L.length+1||L.length>maxsize)
//位置存在不合理或者顺序表长度大于宏定义的常量
{
printf("ERROR!\n");
return 0;
}
int j;
for(j=length-1;j>=p,--i)
{
L.data[j+1]=L.data[j];
}
L.data[p]=e;
++(L.length);
return 1;
}
删除:1.定义顺序表结构 2.把位置后面的元素前移 3。顺序表的长度-1
# define maxsize 100
typedef struct{
int data[maxsize];
int length;
}Sqlist;
int delelem(Sqlist & L,int i,int & e)//i是位置,e是元素
{
if(i<0||i>L.length-1||L.length>maxsize)//注意这个i>L.length-1是因为不能删除尾元素
//位置存在不合理或者顺序表长度大于宏定义的常量
{
printf("ERROR!\n");
return 0;
}
int j;
e=L.data[p];
for(j=p;j<L.length-1,++i) //这里的j<L.length-1是要保证最后一个前移元素的位置(length-1)在长度范围内
{
L.data[j]=L.data[j+1];
}
--(L.length);
return 1;
}
完美 顺序表的操作是++i;--i