用c++做一个菜单,里面包含有对链表进行增删改查的功能
时间: 2024-09-17 16:07:56 浏览: 22
为了实现一个包含链表增删改查功能的菜单,我们首先需要定义一个链表结构。以下是一个简单的单链表结构:
```cpp
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
接下来,我们可以实现一些基本的链表操作函数,如添加节点、删除节点、修改节点值和查找节点。
```cpp
// 在链表末尾添加一个新节点
void addNode(ListNode*& head, int value) {
ListNode* newNode = new ListNode(value);
if (head == NULL) {
head = newNode;
} else {
ListNode* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 删除指定值的节点
void deleteNode(ListNode*& head, int value) {
if (head == NULL) return;
if (head->val == value) {
ListNode* temp = head;
head = head->next;
delete temp;
return;
}
ListNode* temp = head;
while (temp->next != NULL && temp->next->val != value) {
temp = temp->next;
}
if (temp->next != NULL) {
ListNode* toDelete = temp->next;
temp->next = temp->next->next;
delete toDelete;
}
}
// 修改指定值的节点
void updateNode(ListNode* head, int oldValue, int newValue) {
ListNode* temp = head;
while (temp != NULL) {
if (temp->val == oldValue) {
temp->val = newValue;
break;
}
temp = temp->next;
}
}
// 查找指定值的节点
ListNode* findNode(ListNode* head, int value) {
ListNode* temp = head;
while (temp != NULL) {
if (temp->val == value) {
return temp;
}
temp = temp->next;
}
return NULL;
}
```
最后,我们可以实现一个简单的菜单来让用户选择要执行的操作:
```cpp
int main() {
ListNode* head = NULL;
int choice, value, oldValue, newValue;
while (true) {
cout << "1. 添加节点" << endl;
cout << "2. 删除节点" << endl;
cout << "3. 修改节点值" << endl;
cout << "4. 查找节点" << endl;
cout << "5. 退出" << endl;
cout << "请输入您的选择: ";
cin >> choice;
switch (choice) {
case 1:
cout << "请输入要添加的值: ";
cin >> value;
addNode(head, value);
break;
case 2:
cout << "请输入要删除的值: ";
cin >> value;
deleteNode(head, value);
break;
case 3:
cout << "请输入要修改的值: ";
cin >> oldValue;
cout << "请输入新的值: ";
cin >> newValue;
updateNode(head, oldValue, newValue);
break;
case 4:
cout << "请输入要查找的值: ";
cin >> value;
if (findNode(head, value) != NULL) {
cout << "找到了值为 " << value << " 的节点." << endl;
} else {
cout << "没有找到值为 " << value << " 的节点." << endl;
}
break;
case 5:
return 0;
default:
cout << "无效的选择,请重新输入." << endl;
}
}
return 0;
}
```
这个程序实现了一个简单的菜单,用户可以选择添加、删除、修改或查找链表中的节点。注意,这个示例代码没有处理内存释放问题,实际应用中需要注意内存管理。