gpt4 book ai didi

c++ - 在链表中添加数据

转载 作者:行者123 更新时间:2023-11-30 05:28:34 26 4
gpt4 key购买 nike

我刚开始学习链表,我正在尝试从文件中提取某些信息并使用推送功能将其插入到链表中。当我尝试查看信息以查看它是否正确插入时,它只是一遍又一遍地显示信息的最后一行。我究竟做错了什么?这是我的代码:

struct Country
{
string name;
double population;
};

struct Node
{
Country ctry;
Node *next;
};
Node *world;

void push(Node *&world);

int main ()
{
push(world);
return 0;
}

void push(Node *&world)
{

ifstream inFile("file.csv");

if (!inFile.fail())
{
cout << "File has opened successfully." << endl;
}

if (inFile.fail())
{
cout << "File has failed to open." << endl;
exit(1);
}

double temp, temp1, temp2, temp3, population;
string countryName;
Node *top = new Node;

for (int i = 0; i < 300; i++)
{
if (inFile.eof())
{
top->next = NULL;
break;
}

inFile >> temp >> temp1 >> temp2 >> temp3 >> population;
getline (inFile,countryName);

top -> ctry.population = population;
top -> next = world;
world = top;

top -> ctry.name = countryName;
top -> next = world;
world = top;
}

for (int j = 0; j < 5; j++)
{
cout << top -> ctry.name << endl;
top -> next;
}
}

最佳答案

“world”是链表的开始。

Node *top = new Node;

您在这里创建了一个新节点。我将跳过您填充其内容的部分。

    top -> next = world;
world = top;

正如我提到的,“world”是指向列表开头的当前指针。您现在将其保存在顶部的 next 中。然后将 world 设置为指向新节点。这成为您列表的新起点。这很好。

    top -> next = world;
world = top;

您不小心重复了几行代码。由于此时“top”与“world”是同一个指针,您只需将列表顶部的节点设置为指向它自己即可。那就是你的无限循环。

关于c++ - 在链表中添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36757860/

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