【以下回答由 GPT 生成】
从提供的代码来看,最后无法正常显示结果的原因是main
函数中的输入方式有问题。在输入示例中,输入的是以空格分隔的一串数字,而代码中使用的是cin
来对数字进行输入接收,这种方式是无法接收空格分隔的输入的。因此,需要对输入方式进行修改,采用其他方法来接收以空格分隔的数字。
下面给出一个修改后的代码示例,使用字符串流(stringstream
)和getline
函数来接收以空格分隔的一串数字:
#include<iostream>
#include<sstream>
using namespace std;
// 定义单链表结点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 单链表基本操作:头插法创建链表
ListNode* createLinkedList() {
ListNode* head = nullptr;
string input;
cout << "请输入链表结点的值,以-1结束输入:" << endl;
getline(cin, input);
stringstream ss(input);
int val;
while (ss >> val && val != -1) {
ListNode* newNode = new ListNode(val);
newNode->next = head;
head = newNode;
}
return head;
}
// 单链表基本操作:输出链表
void printLinkedList(ListNode* head) {
if (head == nullptr) {
cout << "链表为空!" << endl;
return;
}
ListNode* p = head;
while (p != nullptr) {
cout << p->val << "->";
p = p->next;
}
cout << "NULL" <<endl;
}
int main() {
ListNode* head = createLinkedList();
cout << "链表的值为:" << endl;
printLinkedList(head);
return 0;
}
这样修改后,可以正常接收以空格分隔的一串数字作为输入,并正确创建并输出单链表的结果。
至于如何显示一个主菜单的形式,该题中的代码示例并没有相关逻辑,因此无法理解你所说的"显示一个主菜单的形式"具体是什么意思。如果是在执行代码之前显示一个菜单供用户选择操作,可以在main
函数中添加相关的逻辑和界面代码来实现。
【相关推荐】