利用顺序表的插入运算建立顺序表,并实现顺序表的查找,插入,删除,输出,排序,合并两个序表,逆置运算用c++的代码
时间: 2023-12-27 13:30:47 浏览: 72
当然可以!以下是利用顺序表实现各种操作的 C++ 代码示例:
```cpp
#include <iostream>
using namespace std;
const int MAX_SIZE = 100; // 最大顺序表长度
// 定义顺序表结构体
struct SeqList {
int data[MAX_SIZE]; // 存储数据的数组
int length; // 当前长度
};
// 初始化顺序表
void initSeqList(SeqList &list) {
list.length = 0;
}
// 插入元素到指定位置
bool insertElement(SeqList &list, int pos, int value) {
if (pos < 1 || pos > list.length + 1 || list.length == MAX_SIZE) {
return false; // 位置无效或顺序表已满,插入失败
}
for (int i = list.length; i >= pos; i--) {
list.data[i] = list.data[i - 1]; // 元素后移
}
list.data[pos - 1] = value;
list.length++;
return true;
}
// 查找元素在顺序表中的位置
int searchElement(SeqList &list, int value) {
for (int i = 0; i < list.length; i++) {
if (list.data[i] == value) {
return i + 1; // 返回位置(从1开始)
}
}
return -1; // 未找到
}
// 删除指定位置的元素
bool deleteElement(SeqList &list, int pos) {
if (pos < 1 || pos > list.length) {
return false; // 位置无效,删除失败
}
for (int i = pos; i < list.length; i++) {
list.data[i - 1] = list.data[i]; // 元素前移
}
list.length--;
return true;
}
// 输出顺序表元素
void outputList(SeqList &list) {
for (int i = 0; i < list.length; i++) {
cout << list.data[i] << " ";
}
cout << endl;
}
// 对顺序表进行冒泡排序
void bubbleSort(SeqList &list) {
for (int i = 0; i < list.length - 1; i++) {
for (int j = 0; j < list.length - i - 1; j++) {
if (list.data[j] > list.data[j + 1]) {
swap(list.data[j], list.data[j + 1]); // 交换元素
}
}
}
}
// 合并两个顺序表
SeqList mergeLists(SeqList &list1, SeqList &list2) {
SeqList mergedList;
initSeqList(mergedList);
// 将list1中的元素插入到mergedList
for (int i = 0; i < list1.length; i++) {
insertElement(mergedList, mergedList.length + 1, list1.data[i]);
}
// 将list2中的元素插入到mergedList
for (int i = 0; i < list2.length; i++) {
insertElement(mergedList, mergedList.length + 1, list2.data[i]);
}
return mergedList;
}
// 对顺序表进行逆置
void reverseList(SeqList &list) {
int left = 0;
int right = list.length - 1;
while (left < right) {
swap(list.data[left], list.data[right]); // 交换元素
left++;
right--;
}
}
int main() {
SeqList list;
initSeqList(list);
// 插入元素
insertElement(list, 1, 10);
insertElement(list, 2, 20);
insertElement(list, 3, 30);
// 输出顺序表
cout << "顺序表元素:";
outputList(list);
// 查找元素
int pos = searchElement(list, 20);
if (pos != -1) {
cout << "元素20在顺序表中的位置:" << pos << endl;
} else {
cout << "元素20不存在于顺序表中" << endl;
}
// 删除元素
deleteElement(list, 2);
// 输出顺序表
cout << "删除元素后的顺序表:";
outputList(list);
// 排序顺序表
bubbleSort(list);
// 输出顺序表
cout << "排序后的顺序表:";
outputList(list);
// 合并两个顺序表
SeqList list1, list2;
initSeqList(list1);
initSeqList(list2);
insertElement(list1, 1, 10);
insertElement(list1, 2, 20);
insertElement(list2, 1, 30);
insertElement(list2, 2, 40);
SeqList mergedList = mergeLists(list1, list2);
cout << "合并后的顺序表:";
outputList(mergedList);
// 逆置顺序表
reverseList(mergedList);
cout << "逆置后的顺序表:";
outputList(mergedList);
return 0;
}
```
希望这段代码可以帮助你理解顺序表的插入、查找、删除、输出、排序、合并和逆置操作。如有疑问,请随时追问!
阅读全文