提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
小白记录每天王道考研C语言数据结构实战记录
顺序表插入,删除,查找的实现
代码如下(示例):
//
// Created by ray on 2022/3/24.
//顺序表插入,删除,查找的实现
//
#include <stdio.h>
#define MaxSize 50
typedef int ElemType;
//顺序表(静态分配)的定义
typedef struct {
ElemType data[MaxSize]; //定义一个数组来存元素
int length; //表示当前顺序表中有多少个元素
} SqList;
//插入元素
bool ListInsert(SqList &L, int i, ElemType e) { //i表示元素要插入到顺序表的哪个位置,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;
}
//删除元素
bool ListDelete(SqList &L, int i, ElemType& e) {
//同上先判断要删除的元素的位置是否合法
if (i < 1 || i > L.length ) {
return false;
}
//判断顺序表中有没有元素
if(L.length == 0){
return false;
}
e = L.data[i - 1]; //获取顺序表中对应的元素,赋值给e
//移动顺序表中元素
// for (int j = L.length; j >= i; j--) {
// L.data[j] = L.data[j - 1];
// }
for (int j = i; j < L.length; ++j) { //删除元素,是向前覆盖的,和插入元素相反
L.data[j - 1] = L.data[j];
}
L.length--; //删除一个元素后,顺序表长度减1;
return true;
}
//查找元素
int LocateElem(SqList &L,ElemType e){
int i;
for (int i = 0; i < L.length; i++) { //从头开始遍历顺序表
if(L.data[i] == e){
return i + 1; //加1表示元素在顺序表中的位置
}
}
return 0;
}
//打印数据的函数,因为要重复打印,所以封装成函数比较方便
void PrintList(SqList &L) {
for (int i = 0; i < L.length; ++i) {
printf("%3d\n", L.data[i]);
}
printf("\n");
}
int main() {
SqList L; //顺序表的名称
bool ret; //查看返回值,布尔类型是True,false;
ElemType del; //存取要删除的元素
//手动存入元素
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.length = 3; //共计三个元素
//
printf("插入前顺序表中的元素为:\n");
// for (int i = 0; i < L.length; ++i) {
// printf("%d\n",L.data[i]);
// }
PrintList(L);
//在顺序表第二个位置插入一个元素60;
printf("在顺序表第二个位置插入一个元素60\n");
ret = ListInsert(L, 2, 60);
if (ret == true) {
printf("====插入成功====\n");
printf("插入后顺序表中的元素为:\n");
// for (int i = 0; i < L.length; ++i) {
// printf("%d\n",L.data[i]);
// }
PrintList(L);
} else {
printf("插入失败\n");
}
//删除第一个位置的元素,并把元素值输出
ret = ListDelete(L,1,del);
if(ret){
printf("删除成功\n");
printf("删除元素的值为%d\n",del);
PrintList(L);
} else{
printf("删除失败\n");
}
int elem_pos;
elem_pos = LocateElem(L,60);
if(elem_pos){
printf("查找成功\n");
printf("元素位置为第%d个\n",elem_pos);
} else{
printf("查找失败\n");
}
return 0;
}
# 总结
王道代码是需要创建cpp文件的,不然&会报错