以顺序表作存储结构,实现线性表的创建、插入。 顺序表的类型描述 #define MAXSIZE 10 // MAXSIZE为最大数据元素数目 typedef int ElemType; typedef struct { ElemType *elem; int length; } SqList; 输入格式: 输入分三行 第一行 元素个数 第二行 元素的值。元素间以空格分隔。 第三行 待插入的位置和元素值 具体格式参看输入样例 输出格式: 输出分两行 第一行 插入前的线性表 第二行 插入后的线性表。 如因插入位置错误失败,输出Insert position error! 如因为表满插入失败,输出OVERFLOW! 具体格式参看输出样例 输入样例: 5 1 3 5 7 9 3 4 输出样例: Before:(1,3,5,7,9) After:(1,3,4,5,7,9) 输入样例: 5 1 3 5 7 9 7 10 输出样例: Before:(1,3,5,7,9) Insert position error! 输入样例: 10 1 2 3 4 5 6 7 8 9 10 6 7 输出样例: Before:(1,2,3,4,5,6,7,8,9,10) OVERFLOW!
时间: 2024-01-03 18:04:10 浏览: 66
顺序表(Sequential List)是一种线性表的顺序存储结构,它使用一段连续的存储单元依次存储线性表的数据元素 在C/C+
以下是完整的C++代码实现:
```cpp
#include <iostream>
using namespace std;
#define MAXSIZE 10 // MAXSIZE为最大数据元素数目
typedef int ElemType;
typedef struct {
ElemType *elem;
int length;
} SqList;
void InitList(SqList &L, int n) {
L.elem = new ElemType[MAXSIZE];
L.length = min(n, MAXSIZE);
for (int i = 0; i < L.length; i++) {
cin >> L.elem[i];
}
}
void PrintList(SqList L) {
cout << "Before:(";
for (int i = 0; i < L.length; i++) {
cout << L.elem[i];
if (i != L.length - 1) {
cout << ",";
}
}
cout << ")" << endl;
}
bool ListInsert(SqList &L, int i, ElemType e) {
if (i < 1 || i > L.length + 1) {
cout << "Insert position error!" << endl;
return false;
}
if (L.length >= MAXSIZE) {
cout << "OVERFLOW!" << endl;
return false;
}
for (int j = L.length - 1; j >= i - 1; j--) {
L.elem[j + 1] = L.elem[j];
}
L.elem[i - 1] = e;
L.length++;
return true;
}
int main() {
SqList L;
int n, i, e;
cin >> n;
InitList(L, n);
cin >> i >> e;
PrintList(L);
if (ListInsert(L, i, e)) {
PrintList(L);
}
return 0;
}
```
阅读全文