Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从文本文件加载链接列表?_C++_Loops_Linked List - Fatal编程技术网

C++ 如何从文本文件加载链接列表?

C++ 如何从文本文件加载链接列表?,c++,loops,linked-list,C++,Loops,Linked List,问候我一直在做一个家庭作业,我必须创建一个链表程序,它可以保存和恢复文本文件中的数据。我已经让它的大部分工作,但我有一些问题,恢复链表使用的数据从文本文件中创建的。当我恢复它时,最后一个元素会重复两次。我相信这与循环有关,但我不确定我是否包括了我的整个任务范围 以下是我迄今为止编写的程序代码: ListNode.h #pragma once template<class T> class List; template<class T> class ListNode {

问候我一直在做一个家庭作业,我必须创建一个链表程序,它可以保存和恢复文本文件中的数据。我已经让它的大部分工作,但我有一些问题,恢复链表使用的数据从文本文件中创建的。当我恢复它时,最后一个元素会重复两次。我相信这与循环有关,但我不确定我是否包括了我的整个任务范围

以下是我迄今为止编写的程序代码:

ListNode.h

#pragma once
template<class T> class List;
template<class T>

class ListNode
{
 friend class List<T>;
public:
 ListNode(const T&);
 T getData()const;
private:
 T data;
 ListNode<T>*next;
};//end ListNode class

template<class T>
ListNode<T>::ListNode( const T &info):data(info), next(NULL)
{
}//end default constructor
template<class T>
T ListNode<T>::getData()const
{
 return data;
}//end function getData 
从文本文件还原链表时,这是其内容:

35
45
55
65
65
我该如何解决这个问题?

您的恢复功能居然能正常工作,这让我感到惊讶。但是是的,它重复了最后一个元素。请尝试以下方法:

while(inFile >> value)
  ...
编辑: 好吧,试一下:

while(inFile >> value)
{
  cout << value << endl;
}

它是否正确显示值?

不久前,我的一个程序出现了这个问题。我花了一段时间才弄明白,我不确定这是否是同一个问题,但请再次检查您的输入文件。如果在最后一个数字后留下一行,编译器将返回最后一个数字两次

例如:

一,

二,

三,

四,

五,

额外线路


只需删除多余的一行

哪一个是你名单上的头号人物?您可以使用while循环甚至if语句遍历每个节点并全部加载它们。

哇,代码太多了。和/或请不要在这样的问题中转储整个代码。只发布相关的位。像这样的代码转储不值得阅读。您知道如何使用调试器吗?如果是这样,您应该使用它来了解问题。如果不是,你应该真正了解这一点。这是程序员必备的工具。可能重复我注意到你正在关闭read-in循环中的文件句柄,你应该修复它。将代码更改为建议的代码,现在只恢复这个:45,65?!它现在起作用了。删除infle>>值;解决了这个问题。谢谢
35
45
55
65
65
while(inFile >> value)
  ...
while(inFile >> value)
{
  cout << value << endl;
}