写一个程序,要求能具有创建顺序线性表、显示(输出)顺序线性表、插入某元素及删除某元素的功能函数
时间: 2023-06-12 16:05:56 浏览: 105
顺序线性表的建立、插入及删除
下面是一个简单的C++程序,实现了创建顺序线性表、显示(输出)顺序线性表、插入某元素及删除某元素的功能函数。
```c++
#include<iostream>
using namespace std;
const int MAXSIZE = 100; // 定义线性表最大长度为100
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前长度
} SqList; // 定义顺序线性表类型
void InitList(SqList &L) {
L.length = 0; // 初始化长度为0
}
void PrintList(SqList L) {
for(int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
}
bool ListInsert(SqList &L, int pos, int e) {
if(pos < 1 || pos > L.length + 1) { // 判断插入位置是否合法
return false; // 插入位置不合法,返回false
}
if(L.length >= MAXSIZE) { // 判断线性表是否已满
return false; // 线性表已满,返回false
}
for(int i = L.length; i >= pos; i--) { // 将pos位置及之后的元素后移
L.data[i] = L.data[i - 1];
}
L.data[pos - 1] = e; // 插入元素
L.length++; // 长度加1
return true; // 插入成功,返回true
}
bool ListDelete(SqList &L, int pos) {
if(pos < 1 || pos > L.length) { // 判断删除位置是否合法
return false; // 删除位置不合法,返回false
}
for(int i = pos; i < L.length; i++) { // 将pos位置及之后的元素前移
L.data[i - 1] = L.data[i];
}
L.length--; // 长度减1
return true; // 删除成功,返回true
}
int main() {
SqList L;
InitList(L);
ListInsert(L, 1, 1);
ListInsert(L, 2, 2);
ListInsert(L, 3, 3);
PrintList(L); // 输出:1 2 3
ListDelete(L, 2);
PrintList(L); // 输出:1 3
return 0;
}
```
在程序中,我们首先定义了一个顺序线性表类型SqList,并定义了其两个成员变量:存储元素的数组data和当前长度length。然后,我们实现了四个函数,分别是:
- InitList:初始化线性表,将其长度length设为0。
- PrintList:输出线性表中的元素。
- ListInsert:在指定位置pos插入元素e,如果插入位置不合法或线性表已满,则返回false,否则返回true。
- ListDelete:删除指定位置pos的元素,如果删除位置不合法,则返回false,否则返回true。
最后,在main函数中,我们创建了一个空的顺序线性表L,并进行了一些操作,包括插入元素、删除元素和输出元素。
阅读全文