新人菜鸟提问:关于C++中的链表问题

#include
#include

using namespace std;

struct node
{
int data;
node * next;
};

int main()
{

ifstream inFile("s.dat",ios::in);

node *head=NULL;
node *tail=NULL;
node *tmp;

int num;
tmp=new node;
inFile>>num;
tmp->next=NULL;
tmp->data=num;
head=tail=tmp;

while(inFile!=NULL)
{   
    tmp=new node;
    inFile>>num;
    tmp->data=num;
    tmp->next=NULL;
    tail->next=tmp;
    tail=tmp;
}


inFile.close();

for(node *p_i=head;p_i!=NULL;p_i=p_i->next)
{
node *p_k=p_i;
for(node *p_j=p_i;p_j!=NULL;p_j=p_j->next)
if(p_j->datadata)
p_k=p_j;
int x=p_i->data;
p_i->data=p_k->data;
p_k->data=x;
}

ofstream outFile("d.dat",ios::out);
node *q=head;
while(q!=NULL)
{
outFile<data<<" ";
q=q->next;
}
outFile.close();

delete tmp;

return 0;

}

为什么文件中的最后一个数会被多读取一遍?

1个回答

 #include<iostream>
#include<fstream>
using namespace std;
struct node
{
int data;
node * next;
};
int main()
{
ifstream inFile("s.dat",ios::in);

node *head=NULL;
node *tail=NULL;
node *tmp;

int num;
tmp=new node;
inFile>>num;
tmp->next=NULL;
tmp->data=num;
head=tail=tmp;

while(!inFile.eof())
{   
    tmp=new node;
    inFile>>num;
    tmp->data=num;
    tmp->next=NULL;
    tail->next=tmp;
    tail=tmp;
}


inFile.close();
for(node *p_i=head;p_i!=NULL;p_i=p_i->next)
{
node *p_k=p_i;
for(node *p_j=p_i;p_j!=NULL;p_j=p_j->next)
if(p_j->data)
p_k=p_j;
int x=p_i->data;
p_i->data=p_k->data;
p_k->data=x;
}
ofstream outFile("d.dat",ios::out);
node *q=head;
while(q!=NULL)
{
outFile << q->data <<" ";
q=q->next;
}
outFile.close();
delete tmp;

return 0;
}

你看看这个应该可以,在你的代码基础上改过的

weixin_39538031
weixin_39538031 嗯,多谢,的确可以了。但是我想问一下,为啥我用inFile!=NULL作为判断输入结束的条件会让最后一个数被多读取一次呢?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!