顺序表: ①建立n个元素的顺序表,实现顺序表建立的基本操作。 ②在指定位置插入一个元素,实现顺序表插入的基本操作。 ③在顺序表中删除指定位置上的元素,实现顺序表的删除的基本操作。
时间: 2023-12-18 22:06:23 浏览: 74
① 建立n个元素的顺序表的基本操作:
1. 定义一个结构体来表示顺序表,包含一个指向元素的指针和记录当前元素个数的整型变量。
```
struct SeqList {
int *data; // 指向数据区
int length; // 当前元素个数
};
```
2. 动态分配内存空间,初始化顺序表。
```
void InitList(SeqList &L, int n) {
L.data = new int[n];
L.length = 0;
}
```
3. 插入元素,修改顺序表的长度。
```
bool Insert(SeqList &L, int i, int x) {
if (i < 1 || i > L.length + 1) return false; // 插入位置不合法
if (L.length == n) return false; // 顺序表已满
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j-1];
}
L.data[i-1] = x;
L.length++;
return true;
}
```
4. 删除元素,修改顺序表的长度。
```
bool Delete(SeqList &L, int i) {
if (i < 1 || i > L.length) return false; // 删除位置不合法
for (int j = i; j < L.length; j++) {
L.data[j-1] = L.data[j];
}
L.length--;
return true;
}
```
5. 释放内存空间。
```
void DestroyList(SeqList &L) {
delete[] L.data;
L.length = 0;
}
```
② 在指定位置插入一个元素的基本操作:
在第 i 个位置插入元素 x,需要将第 i 个位置后面的元素依次往后移动一个位置,然后再将 x 插入到第 i 个位置。
代码实现如下:
```
bool Insert(SeqList &L, int i, int x) {
if (i < 1 || i > L.length + 1) return false; // 插入位置不合法
if (L.length == n) return false; // 顺序表已满
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j-1];
}
L.data[i-1] = x;
L.length++;
return true;
}
```
③ 在顺序表中删除指定位置上的元素的基本操作:
删除第 i 个位置上的元素 x,需要将第 i+1 个位置及以后的元素依次往前移动一个位置,然后将顺序表长度减 1。
代码实现如下:
```
bool Delete(SeqList &L, int i) {
if (i < 1 || i > L.length) return false; // 删除位置不合法
for (int j = i; j < L.length; j++) {
L.data[j-1] = L.data[j];
}
L.length--;
return true;
}
```
阅读全文