标题:在这个程序中怎样让head指向文本文件中的第一个存储的信息呢?
只看楼主
水若
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-5-31
结帖率:100%
已结贴  问题点数:10 回复次数:5 
在这个程序中怎样让head指向文本文件中的第一个存储的信息呢?
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct Student
{
    char name[10];//姓名
    char sex[10];//性别
    char id[10];//学号
    char phone[12];//电话
    Student *next;
};
void List::read()
{
     Student *p;
     p=new Student;
 ifstream inmyfile("tongxue.txt");
 if(!inmyfile)
 {
               cout<<"文件打开失败"<<endl;
               }
                while(inmyfile>>p->name>>p->sex>>p->id>>p->phone)
                {
                             Student *a=head;
                                head=p;
                                head->next=a;
                                                                                    
                                }
                               }
                             
搜索更多相关主题的帖子: 文本文件 phone 电话 
2011-06-09 17:46
a373339205
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:134
注 册:2011-6-9
得分:5 
汗水,你第一次的
Student *p;
     p=new Student;
这个不就是链表的首地址了嘛?
while(inmyfile>>p->name>>p->sex>>p->id>>p->phone)
                {
                             Student *a=head;
                                head=p;
                                head->next=a;
                                                                                    
                                }
                               }
而且你这样做p的地址是没有变的,因为p的地址就没有变过,还是原来的地址。所以不管你怎么做这个都不能成一个链表,最终只能前一个被后一个覆盖,只留下二个
2011-06-09 22:02
a373339205
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:134
注 册:2011-6-9
得分:0 
还有,我没有看到你的head是哪里冒出来的?
2011-06-09 22:02
水若
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-5-31
得分:0 
哦,程序有点长,没有粘上全部
2011-06-10 08:40
yuhong2007
Rank: 1
等 级:新手上路
帖 子:2
专家分:6
注 册:2011-6-10
得分:5 
class List 里面的私有变量是head吧,这个就是首吧,其实我感觉你定义的链表的head就像const 一样,是不变的,不能改变,改变了就没有意义。
head的初始值应该是NULL在class里。
while(inmyfile>>p->name>>p->sex>>p->id>>p->phone)
{
    p->next=NULL;
    if(head==NULL)
         head=p;
    else
    {
        Student* current=head;
        while(current!=NULL)
            current=current->next;
        current=p;
        current=current->next;
    }
}
我感觉应该是这样的。
2011-06-10 20:07
水若
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-5-31
得分:0 
太感谢啦!
2011-06-10 21:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342324-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.456041 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved