最后一次插入时链接列表错误

时间:2013-08-26 03:53:38

标签: c++ linked-list

所以我在这里有这部分代码

这是循环5次(MAX = 5)以将单词插入链接列表。

for ( int i = 0 ; i < MAX ; i++ )
{
    string alphabet = G->returnAlphabets();

    L[i]->addWords(alphabet[i]);
}

我在这里有插入词部分

string line;

fstream myfile ("Words.txt");

while (!myfile.eof())
{
    getline(myfile,line);

    if ( alphabet == line[0] )
    {
        ListNode *newNode = new ListNode;

        if ( head == NULL )
        {
            newNode->item = alphabet;           
            newNode->next = NULL;
            head = newNode;
        }

        else
        {
            newNode->item = line;               
            prev = cur;
            prev->next = newNode;
        }

        cur = newNode;
    }
}

myfile.close();

我的问题是它在最后一个循环中给出了错误。意味着MAX = 4,插入节点。循环的其余部分很好。当我将MAX减小到4意味着它循环4次时,程序没有错误,但是当程序循环5次时会出错。

任何人都可以指出我的错误吗?

编辑:

我在最后一次循环中检测到它没有进入第一个节点 此外,程序从文件中获取单词,只是在输入第一个节点时出现错误

1 个答案:

答案 0 :(得分:1)

使用while (!myfile.eof())的逻辑很糟糕,因为您没有检查getline(myfile, line);是否成功,然后在getline()检测到EOF时继续使用该值。你应该使用:

while (getline(myfile, line))
{
    ...rest of loop...
}

我不清楚(对我而言)没有仔细检查手册或标准line失败后getline()的状态,但很容易导致line[0]失败。< / p>

由于您说“它在最后一次迭代中失败”,这可能是您遇到麻烦的主要原因。