C++ 实现顺序表求前驱和后继功能
C++ 实现顺序表求前驱和后继功能
本代码使用 C++ 语言实现顺序表的求前驱和求后继功能,并提供菜单界面进行操作。代码采用类型重定义,方便修改数据元素类型。测试用例涵盖合法和不合法情况。
#include <iostream>
using namespace std;
// 数据元素的类型定义
typedef int ElementType;
// 顺序表结构体定义
const int MaxSize = 100; // 最大容量
struct SeqList {
ElementType data[MaxSize]; // 数据元素数组
int length; // 当前长度
};
// 初始化顺序表
void init(SeqList& list) {
list.length = 0;
}
// 插入元素到顺序表
bool insert(SeqList& list, int pos, ElementType elem) {
if (pos < 1 || pos > list.length + 1 || list.length == MaxSize) {
return false; // 插入位置不合法或顺序表已满,插入失败
}
// 将插入位置后的元素后移
for (int i = list.length; i >= pos; i--) {
list.data[i] = list.data[i - 1];
}
list.data[pos - 1] = elem; // 插入新元素
list.length++; // 长度加1
return true; // 插入成功
}
// 求前驱元素
bool getPredecessor(SeqList list, ElementType elem, ElementType& predecessor) {
for (int i = 1; i < list.length; i++) {
if (list.data[i] == elem) {
predecessor = list.data[i - 1]; // 找到前驱元素
return true;
}
}
return false; // 未找到元素或元素为第一个,无前驱
}
// 求后继元素
bool getSuccessor(SeqList list, ElementType elem, ElementType& successor) {
for (int i = 0; i < list.length - 1; i++) {
if (list.data[i] == elem) {
successor = list.data[i + 1]; // 找到后继元素
return true;
}
}
return false; // 未找到元素或元素为最后一个,无后继
}
// 打印顺序表元素
void print(SeqList list) {
for (int i = 0; i < list.length; i++) {
cout << list.data[i] << ' ';
}
cout << endl;
}
// 显示菜单
void displayMenu() {
cout << '1---插入元素到顺序表' << endl;
cout << '2---求元素的前驱' << endl;
cout << '3---求元素的后继' << endl;
cout << '4---打印顺序表元素' << endl;
cout << '0---退出' << endl;
}
int main() {
SeqList list;
init(list);
int choice;
while (true) {
displayMenu();
cout << '请输入选择:';
cin >> choice;
if (choice == 1) {
int pos, elem;
cout << '请输入要插入的位置和元素值:';
cin >> pos >> elem;
if (insert(list, pos, elem)) {
cout << '插入成功!' << endl;
} else {
cout << '插入失败!' << endl;
}
} else if (choice == 2) {
ElementType elem, predecessor;
cout << '请输入要求前驱的元素值:';
cin >> elem;
if (getPredecessor(list, elem, predecessor)) {
cout << '前驱元素为:' << predecessor << endl;
} else {
cout << '未找到前驱元素或该元素为第一个元素!' << endl;
}
} else if (choice == 3) {
ElementType elem, successor;
cout << '请输入要求后继的元素值:';
cin >> elem;
if (getSuccessor(list, elem, successor)) {
cout << '后继元素为:' << successor << endl;
} else {
cout << '未找到后继元素或该元素为最后一个元素!' << endl;
}
} else if (choice == 4) {
cout << '顺序表元素为:';
print(list);
} else {
break;
}
}
return 0;
}
以上代码实现了顺序表的插入、求前驱、求后继和打印功能,并提供了菜单供用户选择。通过菜单选择不同的操作,可以进行相应的功能操作。请根据实际需求使用该代码,并按照菜单提示进行操作和测试。
希望这可以解决您的问题!如果还有其他疑问,请随时提问。
原文地址: https://www.cveoy.top/t/topic/bpTT 著作权归作者所有。请勿转载和采集!