1.建立一个含有n个元素的顺序表,元素可以为整形,浮点型,也可以是结构体类型,选其中一种。c++代码 2.对1中建立的顺序表第i个位置进行数据插入操作。c++代码,并写出实验中的问题、解决方法、收获,
时间: 2024-02-19 11:58:49 浏览: 77
1. 建立一个含有n个元素的顺序表,元素为整型:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前长度
} SqList;
// 初始化顺序表
void InitList(SqList &L) {
for (int i = 0; i < MAXSIZE; i++) {
L.data[i] = 0; // 将所有元素初始化为0
}
L.length = 0; // 初始化长度为0
}
// 插入元素
bool InsertElement(SqList &L, int i, int elem) {
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]; // 将第i个位置及之后的元素后移一位
}
L.data[i-1] = elem; // 将新元素插入第i个位置
L.length++; // 表长加1
return true;
}
int main() {
SqList L;
InitList(L);
int n, elem;
cout << "请输入顺序表的长度:";
cin >> n;
cout << "请依次输入" << n << "个整数:" << endl;
for (int i = 1; i <= n; i++) {
cin >> L.data[i-1];
L.length++;
}
cout << "顺序表的元素为:";
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
int i;
cout << "请输入要插入的位置和元素值,以空格分隔:";
cin >> i >> elem;
if (InsertElement(L, i, elem)) {
cout << "插入成功!" << endl;
cout << "插入后的顺序表元素为:";
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
} else {
cout << "插入失败!" << endl;
}
return 0;
}
```
2. 对1中建立的顺序表第i个位置进行数据插入操作:
```c++
bool InsertElement(SqList &L, int i, int elem) {
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]; // 将第i个位置及之后的元素后移一位
}
L.data[i-1] = elem; // 将新元素插入第i个位置
L.length++; // 表长加1
return true;
}
int main() {
SqList L;
InitList(L);
int n, elem;
cout << "请输入顺序表的长度:";
cin >> n;
cout << "请依次输入" << n << "个整数:" << endl;
for (int i = 1; i <= n; i++) {
cin >> L.data[i-1];
L.length++;
}
cout << "顺序表的元素为:";
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
int i;
cout << "请输入要插入的位置和元素值,以空格分隔:";
cin >> i >> elem;
if (InsertElement(L, i, elem)) {
cout << "插入成功!" << endl;
cout << "插入后的顺序表元素为:";
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
} else {
cout << "插入失败!" << endl;
}
return 0;
}
```
在实验中可能会遇到以下问题:
- 插入位置不合法或表满,导致插入失败。
- 插入元素后表长未更新,导致操作后的表长错误。
解决方法:
- 在插入元素前,先判断插入位置是否合法和表是否已满。
- 插入元素后,记得更新表长。
收获:
- 掌握了顺序表的定义和基本操作。
- 熟悉了 C++ 中结构体的定义和使用。
- 学会了如何解决在实验中可能遇到的问题。
阅读全文