如何从文件读取到双向链表?

时间:2015-08-24 07:18:19

标签: c++ file doubly-linked-list

这是我在学校项目的一小部分。我已将数据存储在以下格式的文本文件中:

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;
}

现在,问题是我无法将文件的每个单词存储到新节点中。此代码将文件的最后一个字存储到列表的第一个节点。我不知道如何做到这一点。我在链表中​​表现不佳。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 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();
}