顺序表的基本操作代码(初始化,插入,输出,是否为空,查找,取值,删除)
时间: 2024-06-15 11:04:10 浏览: 117
数据结构机考知识点总结.docx
顺序表是一种线性表的存储结构,可以使用数组来实现。下面是顺序表的基本操作代码:
1. 初始化顺序表:
```cpp
#define MAX_SIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAX_SIZE]; // 用数组存储数据元素
int length; // 当前顺序表的长度
} SeqList;
void InitList(SeqList *L) {
L->length = 0; // 初始化长度为0
}
```
2. 插入元素:
```cpp
bool Insert(SeqList *L, int pos, int value) {
if (pos < 1 || pos > L->length + 1) {
return false; // 插入位置不合法
}
if (L->length >= MAX_SIZE) {
return false; // 顺序表已满,无法插入新元素
}
for (int i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1]; // 将插入位置及之后的元素后移一位
}
L->data[pos - 1] = value; // 在插入位置插入新元素
L->length++; // 长度加1
return true;
}
```
3. 输出顺序表:
```cpp
void PrintList(SeqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]); // 逐个输出顺序表中的元素
}
printf("\n");
}
```
4. 判断顺序表是否为空:
```cpp
bool IsEmpty(SeqList L) {
return L.length == 0; // 若顺序表长度为0,则为空
}
```
5. 查找元素:
```cpp
int Find(SeqList L, int value) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == value) {
return i + 1; // 返回元素在顺序表中的位置
}
}
return -1; // 未找到元素
}
```
6. 获取指定位置的元素值:
```cpp
bool GetElem(SeqList L, int pos, int *value) {
if (pos < 1 || pos > L.length) {
return false; // 位置不合法
}
*value = L.data[pos - 1]; // 将指定位置的元素值赋给value
return true;
}
```
7. 删除指定位置的元素:
```cpp
bool Delete(SeqList *L, int pos) {
if (pos < 1 || pos > L->length) {
return false; // 位置不合法
}
for (int i = pos; i < L->length; i++) {
L->data[i - 1] = L->data[i]; // 将删除位置之后的元素前移一位
}
L->length--; // 长度减1
return true;
}
```
阅读全文