c++采用数组实现链表、初始化、插入、删除、查找、遍历的功能。自己输入元素,通过不同指令输出不同功能
时间: 2023-12-14 16:02:07 浏览: 67
好的,下面是一个采用数组实现链表的C++代码,包括初始化、插入、删除、查找、遍历等功能。你可以根据需要输入不同的指令来执行不同的功能。具体代码如下:
```c++
#include <iostream>
using namespace std;
const int MAX_LENGTH = 100; // 链表最大长度
struct Node {
int val; // 节点值
int next; // 下一个节点的索引
} list[MAX_LENGTH]; // 链表数组
int head; // 头节点索引
int tail; // 尾节点索引
int cnt; // 链表长度
// 初始化链表
void init() {
head = -1;
tail = -1;
cnt = 0;
}
// 插入节点
void insert(int val) {
if (cnt == MAX_LENGTH) {
cout << "链表已满,无法插入!" << endl;
return;
}
Node node = {val, -1};
if (head == -1) {
head = 0;
tail = 0;
list[0] = node;
} else {
list[tail].next = tail + 1;
tail++;
list[tail] = node;
}
cnt++;
cout << "插入成功!" << endl;
}
// 删除节点
void remove(int val) {
if (cnt == 0) {
cout << "链表为空,无法删除!" << endl;
return;
}
int pre = -1;
int cur = head;
while (cur != -1) {
if (list[cur].val == val) {
if (pre == -1) { // 删除头节点
head = list[cur].next;
} else {
list[pre].next = list[cur].next;
if (list[cur].next == -1) { // 删除尾节点
tail = pre;
}
}
cnt--;
cout << "删除成功!" << endl;
return;
}
pre = cur;
cur = list[cur].next;
}
cout << "节点不存在,删除失败!" << endl;
}
// 查找节点
void find(int val) {
if (cnt == 0) {
cout << "链表为空,无法查找!" << endl;
return;
}
int cur = head;
while (cur != -1) {
if (list[cur].val == val) {
cout << "节点 " << val << " 存在,索引为 " << cur << endl;
return;
}
cur = list[cur].next;
}
cout << "节点 " << val << " 不存在!" << endl;
}
// 遍历链表
void traverse() {
if (cnt == 0) {
cout << "链表为空!" << endl;
return;
}
int cur = head;
while (cur != -1) {
cout << list[cur].val << " ";
cur = list[cur].next;
}
cout << endl;
}
int main() {
init(); // 初始化链表
cout << "请输入指令:\n"
<< "i:插入节点\n"
<< "r:删除节点\n"
<< "f:查找节点\n"
<< "t:遍历链表\n"
<< "q:退出程序" << endl;
char cmd;
int val;
while (true) {
cin >> cmd;
if (cmd == 'i') {
cout << "请输入要插入的节点值:";
cin >> val;
insert(val);
} else if (cmd == 'r') {
cout << "请输入要删除的节点值:";
cin >> val;
remove(val);
} else if (cmd == 'f') {
cout << "请输入要查找的节点值:";
cin >> val;
find(val);
} else if (cmd == 't') {
traverse();
} else if (cmd == 'q') {
break;
} else {
cout << "无效指令!" << endl;
}
}
return 0;
}
```
在程序运行时,你可以根据提示输入不同的指令来执行不同的功能。例如,输入 `i` 并输入要插入的节点值,即可插入一个节点;输入 `r` 并输入要删除的节点值,即可删除一个节点;输入 `f` 并输入要查找的节点值,即可查找一个节点;输入 `t`,即可遍历链表。
阅读全文