C++ C++;简化版链表,当我加载数据创建链表,并输入更多数据时,似乎有一个缺口
我有一个read函数,它读取外部文件并使每个名称成为一个新节点,我想在我创建的列表上构建,但不知怎的,列表中有一个空白C++ C++;简化版链表,当我加载数据创建链表,并输入更多数据时,似乎有一个缺口,c++,C++,我有一个read函数,它读取外部文件并使每个名称成为一个新节点,我想在我创建的列表上构建,但不知怎的,列表中有一个空白 example: I enter in dave, jack, dog, cat. result: name: dave name: jack name: dog name: cat 它会打印出来,这就是现在的清单。但是,如果我关闭程序,然后再次运行它,read函数将读回这些名称并再次创建链表。但如果我选择添加另一个名字“bob”。它会将其放在上面的下一个节点中 exam
example:
I enter in dave, jack, dog, cat.
result:
name: dave
name: jack
name: dog
name: cat
它会打印出来,这就是现在的清单。但是,如果我关闭程序,然后再次运行它,read函数将读回这些名称并再次创建链表。但如果我选择添加另一个名字“bob”。它会将其放在上面的下一个节点中
example:
I enter in bob
result:
name: dave
name: jack
name: dog
name: cat
name: [BLANK LINE]
name: bob
6.cpp
#包括“6.h”
int main()
{
petAdoption采用;
字符响应;
采用。阅读();
做{
采用。注册();
采用.display();
cout>反应;
cin.忽略(100,“\n”);
}while(toupper(response)='Y');
}
petAdoption::petAdoption()
{
head=NULL;
}
void petAdoption::enroll()
{
字符温度[温度大小];
cout name=pet.name;
newNode->next=NULL;
if(NULL==头)
{
头=新节点;
当前=新节点;
}
其他的
{
电流=水头;
while(当前->下一步!=NULL){
当前=当前->下一步;
}
下一步;
}
流式写入;
write.open(“pets.txt”,ios::app);
写下名字;
}
当前->下一步=新节点;
当前=当前->下一步;
}
}
}
read.close();
}
6.h
#包括
#包括
#包括
#包括
使用名称空间std;
const int TEMP_SIZE=250;
结构动物
{
字符*名称;
动物*下一步;
};
类掺杂
{
公众:
petAdoption();
//~petAdoption();
无效注册();
无效读取();
void display();
私人:
动物*头部,*当前,*新节点;
动物宠物;
};
不是在C++中编写读文件循环的方法。code>eof()仅在尝试读取文件末尾之后返回true,因此执行循环体的次数过多
写入循环的正确方法如下所示:for (;;)
{
read.getline(temp, TEMP_SIZE);
if (read.failed())
break;
...
}
或者更习惯地说:
while (read.getline(temp, TEMP_SIZE))
{
...
}
意思完全一样
还要注意,我使用了failed()
而不是eof()
——文件结尾不是读取失败的唯一原因
while(!read.eof())
{
read.getline(temp, TEMP_SIZE);
...
}
for (;;)
{
read.getline(temp, TEMP_SIZE);
if (read.failed())
break;
...
}
while (read.getline(temp, TEMP_SIZE))
{
...
}