C++ 我在反转LinkedList时得到负值
我在尝试反转链接列表时遇到问题。链表中的数字为:C++ 我在反转LinkedList时得到负值,c++,linked-list,nodes,C++,Linked List,Nodes,我在尝试反转链接列表时遇到问题。链表中的数字为: 9, 0, 14, 7, 1 当我尝试反转它们时,我得到: 7, 14, 0, 9, -842150451. 我想知道为什么我没有得到数字1,但我得到的是作为输出的-84215051 下面是我的displayinReverse()方法: void LinkedList::displayinReverse() { if (first == NULL) return; Node *prev = NULL, *cur
9, 0, 14, 7, 1
当我尝试反转它们时,我得到:
7, 14, 0, 9, -842150451.
我想知道为什么我没有得到数字1,但我得到的是作为输出的-84215051
下面是我的displayinReverse()
方法:
void LinkedList::displayinReverse() {
if (first == NULL)
return;
Node *prev = NULL, *current = NULL, *next = NULL;
current = first;
while (current != NULL) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
first = prev;
}
case 6:
cout << "Elements reversed: ";
myList.displayinReverse();
myList.display();
break;
调用displayinReverse()
方法:
void LinkedList::displayinReverse() {
if (first == NULL)
return;
Node *prev = NULL, *current = NULL, *next = NULL;
current = first;
while (current != NULL) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
first = prev;
}
case 6:
cout << "Elements reversed: ";
myList.displayinReverse();
myList.display();
break;
案例6:
cout您可能想查看的潜在区域:
检查与如何在节点构造函数方法或createNode
方法中构建节点
对象相关的代码。确保正确初始化相应字段时NULL
李>
第一个
全局变量的初始化。您的输出似乎表明您从指向节点中第二个元素的first
开始(输出从7
开始,而不是1
)李>
您的display()
方法/函数很可能在列表中最后一个元素(尾部)之外迭代。需要检查display()
方法/函数的逻辑李>
从对输出的检查来看,错误的原因可能在步骤2和步骤3中 删除了C标记。你的代码是C++,不要误入歧途。另外,C++对空指针的类型安全性更高,使用了 NulLPTR</代码>。使用它而不是NULL
。考虑到它不做任何输出,displayinReverse()
是一个相当奇怪的名称。此外,请提供一个完整且可验证的示例。缺少节点定义,因此显示方法84215041是一个魔术值。将其转换为十六进制(0xCDCD)并用谷歌搜索。您的算法有点复杂。为什么不交换每个元素的“下一个”和“上一个”,然后首先指向“最后一个”?