这是我老师给我们的代码(只是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);
}
答案 0 :(得分:1)
给定输入1 2 3 4
,正确的输出为4 3 2 1
。
请注意,每次拨打addNode()
时,都会在 head
之前推送新节点:
else {
temp->next = head;
head->prev = temp;
}
然后新节点成为新的head
:
head = temp;
==&GT;当您遍历列表时,元素将以与插入相反的顺序显示。