用c++做一个菜单,里面包含对链表增删改查的功能
时间: 2024-09-17 21:08:16 浏览: 31
为了实现一个包含链表增删改查功能的菜单,我们首先需要定义一个链表结构。以下是一个简单的单链表结构:
```cpp
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
接下来,我们可以实现链表的基本操作,如插入、删除、查找和修改节点。以下是一个简单的链表类,包含了这些操作:
```cpp
class LinkedList {
public:
LinkedList() : head(NULL) {}
void insert(int val) {
ListNode* newNode = new ListNode(val);
if (!head) {
head = newNode;
} else {
ListNode* temp = head;
while (temp->next) {
temp = temp->next;
}
temp->next = newNode;
}
}
bool deleteNode(int val) {
if (!head) return false;
if (head->val == val) {
ListNode* temp = head;
head = head->next;
delete temp;
return true;
}
ListNode* prev = head;
ListNode* curr = head->next;
while (curr) {
if (curr->val == val) {
prev->next = curr->next;
delete curr;
return true;
}
prev = curr;
curr = curr->next;
}
return false;
}
ListNode* find(int val) {
ListNode* temp = head;
while (temp) {
if (temp->val == val) {
return temp;
}
temp = temp->next;
}
return NULL;
}
void update(int oldVal, int newVal) {
ListNode* node = find(oldVal);
if (node) {
node->val = newVal;
}
}
void display() {
ListNode* temp = head;
while (temp) {
cout << temp->val << " -> ";
temp = temp->next;
}
cout << "NULL" << endl;
}
private:
ListNode* head;
};
```
现在我们可以创建一个菜单来让用户选择不同的操作。以下是一个简单的菜单实现:
```cpp
int main() {
LinkedList list;
int choice, value, oldValue, newValue;
while (true) {
cout << "1. 插入节点" << endl;
cout << "2. 删除节点" << endl;
cout << "3. 查找节点" << endl;
cout << "4. 更新节点" << endl;
cout << "5. 显示链表" << endl;
cout << "6. 退出" << endl;
cout << "请输入您的选择: ";
cin >> choice;
switch (choice) {
case 1:
cout << "请输入要插入的值: ";
cin >> value;
list.insert(value);
break;
case 2:
cout << "请输入要删除的值: ";
cin >> value;
if (list.deleteNode(value)) {
cout << "节点已删除" << endl;
} else {
cout << "未找到该值的节点" << endl;
}
break;
case 3:
cout << "请输入要查找的值: ";
cin >> value;
if (list.find(value)) {
cout << "找到了值为 " << value << " 的节点" << endl;
} else {
cout << "未找到值为 " << value << " 的节点" << endl;
}
break;
case 4:
cout << "请输入要更新的值: ";
cin >> oldValue;
cout << "请输入新的值: ";
cin >> newValue;
list.update(oldValue, newValue);
break;
case 5:
list.display();
break;