以顺序表作存储结构,实现线性表的创建、插入。 顺序表的类型描述 #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-04 10:02:28 浏览: 57
下面是使用 C++ 实现的顺序表的创建、插入的代码,可以参考:
```c++
#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 = 0; // 初始化长度为0
for (int i = 0; i < n; i++) {
cin >> L.elem[i]; // 读入元素值
L.length++; // 更新长度
}
}
void InsertList(SqList &L, int pos, ElemType e) {
if (pos < 1 || pos > L.length + 1) { // 判断插入位置是否合法
cout << "Insert position error!" << endl;
return;
}
if (L.length >= MAXSIZE) { // 判断表是否已满
cout << "OVERFLOW!" << endl;
return;
}
for (int i = L.length; i >= pos; i--) { // 从后往前移动元素
L.elem[i] = L.elem[i - 1];
}
L.elem[pos - 1] = e; // 插入新元素
L.length++; // 更新长度
}
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;
}
int main() {
SqList L;
int n, pos, e;
cin >> n;
InitList(L, n); // 创建线性表
cin >> pos >> e;
InsertList(L, pos, e); // 插入元素
PrintList(L); // 输出线性表
return 0;
}
```
输入样例解释:
第一行为元素个数,n=5。
第二行为元素的值,分别为 1、3、5、7、9。
第三行为待插入的位置和元素值,pos=3,e=4。
输出样例解释:
插入前的线性表为 (1,3,5,7,9)。
插入后的线性表为 (1,3,4,5,7,9)。
阅读全文