C++文件读取到链表的问题,怎么改
#include<bits/stdc++.h>
using namespace std;
struct Plant
{
//植物信息定义
string name; //植物名称
string sname; //学名
string place[100]; //分布地
string detail; //详情描述
};
typedef struct LNode
{
Plant data; //结点的数据域
struct LNode *next; //指针域
} LNode,*LinkList;
void ReadFile(LinkList &L, string filename)
{
//从文件中读取数据,存入链表L中
ifstream infile;
infile.open(filename.c_str());//打开文件
string line;
LinkList p=L;
while(getline(infile,line))
{
//读取一行植物数据
Plant temp;
stringstream ss(line);
string s;
int flag=0;
while(getline(ss,s,'#'))
{
cout<<s<<endl;
if(flag==0) temp.name=s;
if(flag==1) temp.sname=s;
if(flag==2)
{
stringstream ssplace(s);
string place;
int placenum=0;
while(getline(ssplace,place,'@'))
{
temp.place[placenum]=place;
placenum++;
}
}
if(flag==3) temp.detail=s;
flag++;
}
// L->data=temp;
// L=L->next;
}
//L=NULL;
//L=p;
}
int exam(LinkList L,string name)
{
//判断该植物名称name是否存在于plant.txt中
LinkList p=L;
//InitList(p);
//p=L;
//LNode *p=L;
if(p==NULL) cout<<"链表为NULL"<<endl ;
else cout<<"链表不为NULL"<<endl ;
int flag=0;
while (p!=NULL)
{
cout<<p->data.name<<endl;
if (p->data.name == name)
{
flag=1;
return flag;
}
p = p->next;
}
return flag;
}
bool Insert(LinkList &L, string filename)
{
//增加植物信息,输入植物的名称、学名、分布地和详情描述信息,将该植物的基本信息添加到plant.txt中的最后
//如果该植物名称存在于plant.txt中,返回false,否则,返回true
}
void InitList(LinkList &L)
{
//构造一个空的单链表L
L=new LNode;
L->next=NULL;
}
void check(string filename)
{
//读取文件最后一行内容,即新增植物信息
ifstream infile;
infile.open(filename.c_str()); //打开文件
string line, last_line;
while (getline(infile, line))
{
last_line = line;
}
cout << last_line << endl;
infile.close();
}
int main()
{
LinkList L;
string filename1="plant.txt"; //每次从plant.txt中读取数据,不保存之前新增的数据
string filename2="data_edit/plant.txt";
InitList(L);
//读plant.txt文件
ReadFile(L,filename1);
string Pname="二色补血草";
if(exam(L,Pname))
{
cout<<Pname<<"is in the linked list"<<endl;
}
else
{
cout<<Pname<<"is not in the linked list"<<endl;
}
//if(Insert(L,filename2))
//check(filename2);
//else
//cout<<"增加失败\n";
return 0;
}
plant.txt
二色补血草#Limonium bicolor#江苏@辽宁@黑龙江@吉林#多年生草本,高20-50厘米
珊瑚补血草#Limonium coralloides#新疆#多年生草本,高25-50厘米