这是我在学校项目的一小部分。我已将数据存储在以下格式的文本文件中:
bike
dock
car
现在,我想将此文件中的数据读入双向链表。这是我使用的代码。
#include <iostream>
#include <strings.h>
#include <fstream>
using namespace std;
class item
{
public:
string name;
item *next;
item *previous;
};
class list:private item
{
item * first;
public:
list();
void load();
void display();
};
list::list()
{
first = NULL;
}
void list::load()
{
item *current;
ifstream fin;
fin.open("List.txt");
current=new item;
while(!fin.eof())
{
fin>>current->name;
current->previous=NULL;
current->next=NULL;
}
fin.close();
first=current;
}
现在,问题是我无法将文件的每个单词存储到新节点中。此代码将文件的最后一个字存储到列表的第一个节点。我不知道如何做到这一点。我在链表中表现不佳。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
好吧,尝试这样的加载功能(未测试):
void list::load()
{
item *current;
item *prev;
ifstream fin;
fin.open("List.txt");
prev = NULL;
while(!fin.eof())
{
current=new item;
if (first == NULL) // we set first the first time
first = current;
fin>>current->name;
current->previous=prev;
current->next = NULL;
if (prev != NULL)
prev->next=current;
prev = current; // we store the current as the prev for next iteration
}
fin.close();
}