gpt4 book ai didi

c++ - 链表显示乱码

转载 作者:行者123 更新时间:2023-11-30 04:56:32 26 4
gpt4 key购买 nike

不知道为什么,但每次我显示链接列表时,它只显示乱码。当我将 _getche 添加到第 31 行,并使用 _putch(current->c); 在第 53 行显示值时发生此问题 如果有人可以帮助描述我的问题是并提供一个解决方案,我们将不胜感激!

#include <iostream>
#include <string>
#include <conio.h>
using namespace std;

class ListNode
{
public:
char c;
ListNode *next;
};

int main()
{
ofstream outputFile;
ListNode *current;
ListNode *start;
ListNode *newNode = new ListNode();

current = nullptr;
start = newNode;
newNode->next = nullptr;;

cout << "Hit 'esc' when you are done.\n";
while (newNode->c = _getche() != 27)
{
//If start is empty, create node
if (current == nullptr)
{
current = newNode;
}
else //If start is not empty, create new node, set next to the new node
{
current->next = newNode;
current = newNode;
}

newNode = new ListNode();
newNode->next = nullptr;
}

//Display linked list
cout << "Here is what you have typed so far:\n";
current = start;
while (current != nullptr)
{
_putch(current->c);
current = current->next;
}
cout << endl;

outputFile.close();
system("pause");
return 0;
}

最佳答案

在:

while (newNode->c = _getche() != 27)

= 有较低的 precedence !=,因此它将 _getche() != 27 的结果分配给 newNode->c

修复:

while((newNode->c = _getche()) != 27)

通过维护 ptail 指向最后一个节点的 next 指针,用 head 初始化,可以更容易地追加单链表:

ListNode *head = nullptr, **ptail = &head;

cout << "Hit 'esc' when you are done.\n";
for(char c; (c = _getche()) != 27;) {
auto node = new ListNode{c, nullptr}; // allocate and initialize a new node
*ptail = node; // append to the end of the list
ptail = &node->next; // move the end of list to the new node
}

//Display linked list
cout << "Here is what you have typed so far:\n";
for(auto next = head; next; next = next->next)
_putch(next->c);

关于c++ - 链表显示乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52451833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com