建立一个顺序表,随机产生10个100以内的整数,并按要求完成: (1)编写显示函数,在屏幕上显示顺序表中的10个整数; (2)编写查找函数,从键盘输入任一整数在顺序表中查找,若找到,返回该元素在顺序表中的位置,否则提示无此元素; (3)编写插入函数,从键盘输入待插入元素及插入位置,将完成插入后的顺序表输出; (4)编写删除函数,从键盘输入待删除元素位置,将该位置元素删除后的顺序表输出。
时间: 2024-03-16 11:43:36 浏览: 57
顺序表的实现及应用(含合并函数)
5星 · 资源好评率100%
好的,我来帮你解答问题。
以下是基于 C++ 语言的代码,实现了你的要求:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MAXSIZE = 10; // 顺序表最大长度
struct SqList {
int data[MAXSIZE]; // 存储数据的数组
int length; // 顺序表的当前长度
};
// 初始化顺序表
void InitList(SqList &L) {
L.length = 0;
}
// 显示顺序表内容
void ShowList(SqList L) {
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
}
// 在顺序表中查找指定元素
int LocateElem(SqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i;
}
}
return -1; // 表示未找到该元素
}
// 在顺序表中插入元素
bool ListInsert(SqList &L, int pos, int e) {
if (pos < 1 || pos > L.length + 1 || L.length >= MAXSIZE) {
return false; // 插入位置越界或顺序表已满,插入失败
}
for (int i = L.length - 1; i >= pos - 1; i--) {
L.data[i + 1] = L.data[i]; // 元素后移
}
L.data[pos - 1] = e; // 插入新元素
L.length++; // 顺序表长度加1
return true;
}
// 在顺序表中删除元素
bool ListDelete(SqList &L, int pos) {
if (pos < 1 || pos > L.length) {
return false; // 删除位置越界,删除失败
}
for (int i = pos; i < L.length; i++) {
L.data[i - 1] = L.data[i]; // 元素前移
}
L.length--; // 顺序表长度减1
return true;
}
int main() {
SqList L;
InitList(L);
// 随机生成10个100以内的整数
srand(time(NULL));
for (int i = 0; i < 10; i++) {
L.data[i] = rand() % 100 + 1;
L.length++;
}
cout << "生成的顺序表为:" << endl;
ShowList(L);
// 查找指定元素
int e;
cout << "请输入要查找的元素:";
cin >> e;
int pos = LocateElem(L, e);
if (pos != -1) {
cout << "元素 " << e << " 在顺序表中的位置为:" << pos + 1 << endl;
} else {
cout << "未找到元素 " << e << endl;
}
// 插入元素
int insert_pos, insert_e;
cout << "请输入要插入的位置和元素,用空格分隔:";
cin >> insert_pos >> insert_e;
if (ListInsert(L, insert_pos, insert_e)) {
cout << "插入后的顺序表为:" << endl;
ShowList(L);
} else {
cout << "插入失败,位置不合法或顺序表已满" << endl;
}
// 删除元素
int delete_pos;
cout << "请输入要删除的元素位置:";
cin >> delete_pos;
if (ListDelete(L, delete_pos)) {
cout << "删除后的顺序表为:" << endl;
ShowList(L);
} else {
cout << "删除失败,位置不合法" << endl;
}
return 0;
}
```
以上是一个基础的顺序表实现,你可以根据需要进行修改和完善。
阅读全文