顺序表的基本操作代码 顺序表的代码
时间: 2024-09-12 21:00:31 浏览: 33
顺序表是一种线性表的数据结构,它使用一段连续的内存空间来存储数据。在顺序表中,数据元素之间的逻辑顺序与物理顺序是相同的。顺序表的基本操作通常包括初始化、插入、删除、查找和获取元素等。以下是使用C语言实现的一个简单顺序表的基本操作代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef int ElementType; // 定义元素类型
typedef struct {
ElementType data[MAXSIZE]; // 存储数据元素的数组
int length; // 顺序表当前长度
} SeqList;
// 初始化顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 在顺序表L中第i个位置插入新元素e
int ListInsert(SeqList *L, int i, ElementType e) {
if (i < 1 || i > L->length + 1 || L->length == MAXSIZE) {
return 0; // 插入位置不合法或表满
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1]; // 将第i个位置及之后的元素后移
}
L->data[i - 1] = e; // 在位置i处放入新元素
L->length++;
return 1;
}
// 删除顺序表L中第i个位置的元素,并将其存储到e中
int ListDelete(SeqList *L, int i, ElementType *e) {
if (i < 1 || i > L->length) {
return 0; // 删除位置不合法
}
*e = L->data[i - 1];
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j]; // 将第i个位置之后的元素前移
}
L->length--;
return 1;
}
// 获取顺序表L中第i个位置的元素
int GetElem(SeqList L, int i, ElementType *e) {
if (i < 1 || i > L.length) {
return 0; // 获取位置不合法
}
*e = L.data[i - 1];
return 1;
}
// 打印顺序表中的所有元素
void PrintList(SeqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
InitList(&L);
ListInsert(&L, 1, 10); // 插入元素10到位置1
ListInsert(&L, 2, 20); // 插入元素20到位置2
ListInsert(&L, 3, 30); // 插入元素30到位置3
PrintList(L); // 打印顺序表
ElementType e;
if (ListDelete(&L, 2, &e)) { // 删除位置2的元素
printf("Deleted element: %d\n", e);
}
PrintList(L); // 打印顺序表
if (GetElem(L, 2, &e)) { // 获取位置2的元素
printf("Element at position 2: %d\n", e);
}
return 0;
}
```
这个代码示例展示了顺序表的基本操作,包括初始化、插入、删除、获取元素和打印顺序表。在实际应用中,顺序表还可以进行更多的操作,比如销毁顺序表、清空顺序表、查找元素位置等。
阅读全文