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)并用谷歌搜索。您的算法有点复杂。为什么不交换每个元素的“下一个”和“上一个”,然后首先指向“最后一个”?