双重链接列表给出了不同的结果?

时间:2018-02-16 08:36:30

标签: c++ doubly-linked-list

这是我老师给我们的代码(只是addNode函数),所以告诉我为什么当我运行input.txt时,数字如1 2 3 4 ...

在Visual Studio中,它出现了1,2,3,4 ..并且在repl上,它出现了4,3,2,1。

我会问我的老师,但这是周末,所以提前谢谢!

#include <iostream>
#include <fstream>

using namespace std;

struct node {

int data;
node *next = NULL;
node *prev = NULL;

};

void addNode(node *&head, node *&tail, int value) {

    node *temp = new node;
    temp->data = value;
    temp->prev = NULL;

    if (!head) {
        temp->next = NULL;
        tail = temp;
    }

    else {
        temp->next = head;
        head->prev = temp;
    }
    head = temp;
}
void traverse(node *head) {
    node *current = head;

    while (current) {
        cout << current->data << endl;
        current = current->next;
    }
}

int main() {
    node *head, *tail;
    head = tail = NULL;
    int value;

    ifstream in("c:\\temp\\input.txt");

    while (!in.eof()) {
        in >> value;
        addNode(head, tail, value);
    }
    traverse(head);
}

1 个答案:

答案 0 :(得分:1)

给定输入1 2 3 4,正确的输出为4 3 2 1

请注意,每次拨打addNode()时,都会在 head之前推送新节点

else {
    temp->next = head;
    head->prev = temp;
}

然后新节点成为新的head

head = temp;

==&GT;当您遍历列表时,元素将以与插入相反的顺序显示。