在反转LinkedList时我得到负值

时间:2017-09-05 08:41:50

标签: c++ linked-list nodes

我尝试撤消链接列表时遇到问题。链表中的数字是:

9, 0, 14, 7, 1

当我试图扭转它们时,我得到:

7, 14, 0, 9, -842150451.

我想知道为什么我没有得到数字 1 ,但我得到输出 -842150451

这是我的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;
}

displayinReverse()方法的发起:

    case 6:
        cout << "Elements reversed: ";
        myList.displayinReverse();
        myList.display();
        break;

这是一张图片,显示反转列表1次不起作用,但当我再次反转时,我将获得原始列表:

reverse the list 2 times

1 个答案:

答案 0 :(得分:0)

您可能想要查看的潜在领域:

  1. 检查与您在Node构造函数方法或Node方法中构建createNode对象的方式相关的代码。确保您NULL正确初始化相应的字段。
  2. first全局变量的初始化。您的输出似乎表明您开始时first指向节点中的第二个元素(输出以7开头,而不是1)。
  3. 您的display()方法/函数很可能会超出列表中的最后一个元素(尾部)。需要检查display()方法/函数的逻辑。
  4. 从您的输出检查中,似乎错误的原因可能在步骤2和3中。