单链表的创建输出,求表长,主函数功能菜单创建
时间: 2024-09-23 12:10:33 浏览: 37
创建单链表并输出其长度以及提供用户交互式操作的一个基本示例可能如下:
```c++
#include <iostream>
// 定义链表节点结构
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 创建单链表
ListNode* createList() {
ListNode* head = nullptr;
int n, num;
std::cout << "请输入链表的节点数量:";
std::cin >> n;
for (int i = 0; i < n; ++i) {
std::cout << "请输入第 " << (i+1) << " 个节点的值:";
std::cin >> num;
ListNode* newNode = new ListNode(num);
if (head == nullptr) {
head = newNode;
} else {
ListNode* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
return head;
}
// 计算链表长度
int getLength(ListNode* head) {
int length = 0;
ListNode* temp = head;
while (temp != nullptr) {
length++;
temp = temp->next;
}
return length;
}
// 主函数:用户界面和功能选择
void mainMenu() {
ListNode* listHead = createList();
if (listHead != nullptr) {
std::cout << "链表长度为:" << getLength(listHead) << std::endl;
int choice;
do {
std::cout << "\n请选择操作:\n"
<< "1. 查看链表\n"
<< "2. 计算链表长度\n"
<< "3. 删除某个节点(仅示例,未实现)\n"
<< "4. 退出\n";
std::cin >> choice;
switch (choice) {
case 1:
traverseList(listHead); // 假设有一个名为traverseList的函数用于遍历打印链表
break;
case 2:
std::cout << "链表长度:" << getLength(listHead) << std::endl;
break;
case 3:
std::cout << "删除功能暂未实现。\n";
break;
case 4:
deleteList(listHead); // 假设有一个名为deleteList的函数用于销毁链表
std::cout << "链表已销毁.\n";
break;
default:
std::cout << "无效选择,请重新输入.\n";
}
} while (choice != 4);
} else {
std::cout << "链表为空.\n";
}
}
int main() {
mainMenu();
return 0;
}
```
在这个例子中,我们创建了一个链表,然后提供了一个简单的用户界面,让用户选择查看链表、计算长度或者退出。注意,这里的删除节点功能并未实现,因为这个示例专注于基础链表操作的演示。
阅读全文