考研C语言数据结构-顺序表(线性表的顺序存储实现)
#include <stdio.h>
#include <stdlib.h>
#define maxSize 10
// 定义顺序表存储结构数据类型
typedef struct {
int data[maxSize];
int length;
}SqList;
// 初始化顺序表
void initSqList(SqList &L) {
L.length = 0;
}
// 插入操作
bool listInsert(SqList &L, int index, int e) {// i为位序90[start:1]
if(L.length >= maxSize)
return false;
if(index < 1 || index > L.length + 1)
return false;
for(int i = L.length;i >= index;i--) {
L.data[i] = L.data[i - 1];
}
L.data[index - 1] = e;
L.length++;
return true;
}
// 删除操作
bool listDelete(SqList &L, int index, int &e) {
if(index < 1 || index > L.length)
return false;
e = L.data[index - 1];
for(int i = index;i < L.length;i++) {
L.data[i - 1] = L.data[i];
}
L.length--;
return true;
}
// 按值查找
int locateElem(SqList L, int e) {
for(int i = 0;i < L.length;i++) {
if(L.data[i] == e) {
return i + 1;// 返回的是位序
}
}
return -1;// 查找失败
}
// 按位获取元素
int getElem(SqList L, int index) {// index为位序
if(index < 1 || index > L.length)
return -1;
return L.data[index - 1];
}
// 顺序输出顺序表
void printSqList(SqList L) {
for(int i = 0;i < L.length;i++) {
printf("顺序表第%d个元素:%d\n", i + 1, L.data[i]);
}
}
int main(void) {
SqList L;
initSqList(L);
listInsert(L, 1, 1);
listInsert(L, 2, 2);
listInsert(L, 3, 3);
listInsert(L, 4, 4);
listInsert(L, 5, 5);
int e = 0;
printSqList(L);
listDelete(L, 1, e);
printf("删除第一个元素:%d\n", e);
printSqList(L);
listDelete(L, 4, e);
printf("删除第四个元素:%d\n", e);
printSqList(L);
printf("元素4的位置:%d\n", locateElem(L, 4));
printf("元素5的位置:%d\n", locateElem(L, 5));
printf("获取第一个元素的值:%d\n", getElem(L, 1));
printf("获取第三个元素的值:%d\n", getElem(L, 3));
printf("获取第四个元素的值:%d\n", getElem(L, 4));
system("pause");
return 0;
}
顺序表总结:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程