编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型ElemType为char),并在此基础上设计一个程序exp1.cpp完成以下功能。(1)通过整体建表创建顺序表L,包含元素a、b、c、d、e。(2)输出顺序表L。(3)输出顺序表L的长度。(4)判断顺序表L是否为空。(5)输出顺序表L的第2个元素。(6)输出元素d的位置。(7)在第2个元素位置上插人f元素。(8)输出顺序表L。(9)删除顺序表L的第3个元素。(10)输出顺序表L。(11)释放顺序表L。
时间: 2023-05-30 14:03:28 浏览: 212
顺序表的基本操作及其测试程序
sqlist.cpp实现如下:
```c++
#include <iostream>
using namespace std;
#define MaxSize 100
typedef char ElemType;
typedef struct {
ElemType data[MaxSize]; // 存储空间
int length; // 当前长度
} SqList;
// 初始化顺序表
void InitList(SqList &L) {
L.length = 0;
}
// 判断顺序表是否为空
bool ListEmpty(SqList L) {
return L.length == 0;
}
// 获取顺序表长度
int ListLength(SqList L) {
return L.length;
}
// 输出顺序表
void DispList(SqList L) {
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
}
// 获取指定位置元素
bool GetElem(SqList L, int i, ElemType &e) {
if (i < 1 || i > L.length) {
return false;
}
e = L.data[i - 1];
return true;
}
// 获取元素位置
int LocateElem(SqList L, ElemType e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i + 1;
}
}
return 0;
}
// 在指定位置插入元素
bool ListInsert(SqList &L, int i, ElemType e) {
if (i < 1 || i > L.length + 1 || L.length == MaxSize) {
return false;
}
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.length++;
return true;
}
// 删除指定位置元素
bool ListDelete(SqList &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;
}
// 整体建表
void CreateList(SqList &L, ElemType a[], int n) {
for (int i = 0; i < n; i++) {
L.data[i] = a[i];
}
L.length = n;
}
```
exp1.cpp实现如下:
```c++
#include <iostream>
#include "sqlist.cpp"
using namespace std;
int main() {
SqList L;
ElemType a[] = {'a', 'b', 'c', 'd', 'e'};
CreateList(L, a, 5); // 整体建表
DispList(L); // 输出顺序表
cout << "Length: " << ListLength(L) << endl; // 输出顺序表长度
cout << "List " << (ListEmpty(L) ? "is" : "is not") << " empty" << endl; // 判断顺序表是否为空
ElemType e;
GetElem(L, 2, e); // 获取第2个元素
cout << "The 2nd element is: " << e << endl;
int pos = LocateElem(L, 'd'); // 获取元素d的位置
cout << "The position of d is: " << pos << endl;
ListInsert(L, 2, 'f'); // 在第2个元素位置上插入f元素
DispList(L); // 输出顺序表
ListDelete(L, 3); // 删除第3个元素
DispList(L); // 输出顺序表
return 0;
}
```
阅读全文