C语言的线性表之顺序表攻略
什么是线性表
线性表是一种线性结构,具有前驱后继关系的表结构。线性表有两种存储结构:顺序存储和链式存储。
什么是顺序表
顺序表是一种用一段连续的存储单元依次存储线性表中各元素的存储结构,可以通过下标随机访问表中任意位置的元素。
顺序表的基本操作包括:
- 创建一个空表
- 向表中插入一个元素
- 删除表中一个元素
- 查找表中一个元素
- 遍历表中所有元素
顺序表的实现
顺序表的实现需要两个关键元素:存储结构和基本操作函数。
存储结构
在C语言中,使用数组实现顺序表的存储结构。数组的下标可以作为元素的序号,从0开始计数。
基本操作函数
1. 创建一个空表
#define MAX_SIZE 100 // 定义顺序表的最大容量
typedef struct{
int data[MAX_SIZE]; // 数组存储
int length; // 线性表当前长度
} SeqList;
// 初始化一个空表
void initList(SeqList *L){
L->length = 0;
}
2. 向表中插入一个元素
// 向顺序表中插入元素
int insertList(SeqList *L, int pos, int val){
// 判断是否越界或者表满了
if(pos < 0 || pos > L->length || L->length >= MAX_SIZE){
return 0; // 返回插入失败
}
for(int i = L->length - 1; i >= pos; i--){
L->data[i+1] = L->data[i]; // 将pos位置之后的元素向后移
}
L->data[pos] = val; // 在pos位置插入元素
L->length++; // 表长加1
return 1; // 返回插入成功
}
3. 删除表中一个元素
// 从顺序表中删除元素
int deleteList(SeqList *L, int pos){
// 判断是否越界或者表为空
if(pos < 0 || pos >= L->length || L->length == 0){
return 0; // 返回删除失败
}
for(int i = pos; i < L->length - 1; i++){
L->data[i] = L->data[i+1]; // 将pos位置之后的元素向前移
}
L->length--; // 表长减1
return 1; // 返回删除成功
}
4. 查找表中一个元素
// 在顺序表中查找元素
int searchList(SeqList L, int val){
for(int i = 0; i < L.length; i++){
if(L.data[i] == val){
return i; // 返回元素的位置
}
}
return -1; // 返回未找到元素
}
5. 遍历表中所有元素
// 遍历顺序表中所有元素
void traverseList(SeqList L){
for(int i = 0; i < L.length; i++){
printf("%d ", L.data[i]); // 输出当前元素
}
printf("\n"); // 换行
}
示例说明
示例一:创建一个顺序表
SeqList L;
initList(&L); // 初始化一个空表
示例二:向表中插入元素
insertList(&L, 0, 1); // 在表头位置插入元素1
insertList(&L, 1, 2); // 在表中插入元素2
示例三:删除表中元素
deleteList(&L, 1); // 删除表中第二个元素
示例四:查找表中元素
int pos = searchList(L, 2); // 查找表中元素2的位置
示例五:遍历表中所有元素
traverseList(L); // 遍历表中所有元素
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言的线性表之顺序表你了解吗 - Python技术站