gpt4 book ai didi

c++ - 双向链表给出混合结果?

转载 作者:行者123 更新时间:2023-11-30 05:04:35 25 4
gpt4 key购买 nike

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

在 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 2 3 4,正确的输出是4 3 2 1

请注意,每次调用 addNode() 时,它都会将新节点推送到 head 之前:

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

然后新节点成为新的head:

head = temp;

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

关于c++ - 双向链表给出混合结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48822872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com