#文章为学习过程中的笔记,请大佬指出错误,在评论区留言,感激万分。
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 5
// 定义顺序表的结构体
typedef struct{
int data[MaxSize];
int length;
}SqList;
// 在第i个位置插入一个元素
bool ListInsert(SqList &L,int i,int e){
if(i < 1 || i > L.length) //判读i是否为有效值
return false;
if(L.length > MaxSize) //判读顺序表是否已经满了
return false;
for(int j = L.length - 1; j >= i - 1; j--){ // 把第i个之后的数据向后移动一位
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.length++;
return true;
}
// 删除第i个元素
bool ListDelet(SqList &L,int i){
if(i < 1 || i > L.length) // 判读i是否为有效值
return false;
for(int j = i-1; j <= L.length-1; j++){ // 把第i个元素之后的数据前移一位
L.data[j-1] = L.data[j];
}
L.length--;
return true;
}
// 返回顺序表中e第一次出现的位置
int LocateELem(SqList &L,int e){
for(int i = 0; i < L.length; i++){
if(L.data[i]==e)
return i+1;
else return 0;
}
}
// 输出顺序表
void ListPrint(SqList &L){
for(int i=0;i<L.length;i++)
printf("%d\n",L.data[i]);
printf("顺序表的长度为%d\n",L.length);
printf("---------------------------\n");
}
int main(){
SqList L; // 定义一个顺序表L
printf("输入%d个元素,每两个之间打空格,完毕后按回车\n",MaxSize);
for(int i=0;i<MaxSize;i++){
scanf("%d",&L.data[i]);
L.length++;
}
ListPrint(L); //输出顺序表
printf("%d第一次出现的位置为%d\n",12,LocateELem(L,12));
ListDelet(L,4);
printf("删除第三个位置上的数字后\n");
ListPrint(L); //输出顺序表
ListInsert(L,4,5);
printf("在第四个位置插入数字后\n");
ListPrint(L); //输出顺序表
}