//顺序表的初始化,插入,删除,按值查找
#include <stdio.h>
#define MaxSize 50//用数组存储,定义数组开辟空间的最大值
typedef int ElemType;//提前申明元素类型
//静态分配
typedef struct{
ElemType data[MaxSize];
int length;//定义当前表内的元素
}SqList;
//初始化
void InitList(SqList &L){
L.length=0;
}
//插入
//i代表要插入的位置,从下标1开始插入,e为插入的元素值
bool ListInsert(SqList &L,int i,ElemType e){
if(i<1 || i>L.length+1) return false;//超出插入的合适范围
if(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;
}
//删除 e存储被删除的元素 i是第几个元素(从1开始),j是数组下标,从0开始
bool ListDelete(SqList &L,int i,ElemType &e){
if(i<1 || i>L.length) return false;
e=L.data[i-1];
for(int j=i;j<L.length;j++){
L.data[j-1]=L.data[j];//将元素前移
}
L.length--;
return true;
}
//按值查找 e为要查找的元素值
int LocateElem(SqList L,ElemType e){
int q;
for(int i=0;i<L.length;i++){
if(L.data[i]==e){
q=i+1;
printf("查找成功,且要查找的元素值为第%d个元素\n",q);
}
}
return 0;
}
//打印输出
void PrintList(SqList L){
for(int i=0;i<L.length;i++){
printf("%3d\n",L.data[i]);
}
}
int main(){
SqList L;//顺序表的名称
//手动传值
L.data[0]=1;
L.data[1]=2;
L.data[2]=3; //ListInsert(&l,3,3);
L.length=3;
bool ret=ListInsert(L,2,5);
if(ret){
printf("插入成功\n");
PrintList(L);
}else{
printf("插入失败\n");
}
ElemType e;
bool ret1=ListDelete(L,3,e);
if(ret1){
printf("删除成功\n");
printf("删除的元数值为:%d\n",e);
PrintList(L);
}else{
printf("删除失败\n");
}
LocateElem(L,5);
}
数据结构之顺序表的初始化,插入,删除,按值查找
于 2024-09-04 21:30:53 首次发布