C++//文件读取数据,后怎么建立链表
C++//文件读取数据,后如何建立链表?
------解决方案--------------------
- C/C++ code
#include <iostream> #include <string> #include <cstring> #include <fstream> using namespace std; struct table{ int id; char name[10]; int age; table* next; }; void Create() { table* head=NULL,*tail=NULL,*memory=NULL; string str("Yes"); char choice[4]=""; do{ memory = new table; cout<<"input new student on the table.txt"<<endl; cout<<"input the student's id:"<<endl; cin>>id; cout<<"input the student's name:"<<endl; cout.flush(); cin>>name; cout<<"input the studen's age"<<endl; cin>>age; new -> next = NULL; if(head==NULL&&tail==NULL) { head=memory; tail=memory; } else { tail->next=memory; tail=memory; } printf("choose Y to go ahead,choose N to quit:"); cout.flush(); cin>>choice; }while(str==choice); ofRead("table.txt",head); delete memory; } void ofRead(char* file,table* head) { ofstream of(""file""); of.seekp(0,ios::beg); table* cur=head; do{ of<<cur->id<<' '<<cur->name<<' '<<cur->age<<' '; cur=cur->next; }while(cur==NULL); of.close(); } table* ofWrite(char* file) { table* head=NULL,*cur=NULL,*memory=NULL; ifstream iff(""file""); iff.seekg(0,ios::beg); char str[8]=""; while(iff.getline(str,sizeof(str),' ')) memory = new table; //文件读取数据,后如何建立链表? iff.close(); return head; } void revise(table* head) { cout<<"input student's id that you want to midfy"<<endl; int id_modfiy; table* cur=head; while(cur!=NULL) { if(cur->id==id_modfiy) { cout<<"1.Do you want to modify the student's id" <<"2.Do you want to modify the student's name" <<"3.Do you want to modify the student's age" <<"4.Do you want to modify the student's whole information" endl; int choice; cin>>choice; switch(choice) ( case 1:cin>>cur->id;break; case 2:cin>>cur->name;break; case 3:cin>>cur->age;break; case 4:cin>>cur->id>>cur->name>>cur->age;break; ) } cur=cur->next; } ofRead(name,head); } int main() { Create(); cout<<"Do you want to modify the student information?(yes or no)"<<endl; string str("yes"); char choice[4]=""; cin>>choice; if(str==choice) { char name[10]=""; cout<<"input student's information table file name"<<endl; cin>>name; table* head=ifWrite(name); revise(head); } if(strcmp(choice=="no")==0) { cout<<"your operaion complete."<<endl; } }
------解决方案--------------------
- C/C++ code
#include <iostream> #include <string> #include <cstring> #include <fstream> using namespace std; struct table{ int id; char name[10]; int age; table* next; }; void ofRead(char* file,table* head)//这儿提到前边来了 { ofstream of(file); of.seekp(0,ios::beg); table* cur=head; do{ of<<cur->id<<' '<<cur->name<<' '<<cur->age<<' '; cur=cur->next; }while(cur==NULL); of.close(); } void Create() { table* head=NULL,*tail=NULL,*memory=NULL; string str("Yes"); char choice[4]=""; do{ memory = new table; cout<<"input new student on the table.txt"<<endl; cout<<"input the student's id:"<<endl; cin>>memory->id;//这儿 cout<<"input the student's name:"<<endl; cout.flush(); cin>>memory->name;//这儿 cout<<"input the studen's age"<<endl; cin>>memory->age;//这儿 memory -> next = NULL; if(head==NULL&&tail==NULL) { head=memory; tail=memory; } else { tail->next=memory; tail=memory; } printf("choose Y to go ahead,choose N to quit:"); cout.flush(); cin>>choice; }while(str==choice); ofRead("table.txt",head); delete memory; } table* ifWrite(char* file)//这儿 { table* head=NULL,*cur=NULL,*memory=NULL; ifstream iff(file); iff.seekg(0,ios::beg); char str[8]=""; while(iff.getline(str,sizeof(str),' ')) memory = new table; //文件读取数据,后如何建立链表? iff.close(); return head; } void revise(table* head) { cout<<"input student's id that you want to midfy"<<endl; int id_modfiy; table* cur=head; while(cur!=NULL) { if(cur->id==id_modfiy) { cout<<"1.Do you want to modify the student's id" <<"2.Do you want to modify the student's name" <<"3.Do you want to modify the student's age" <<"4.Do you want to modify the student's whole information" <<endl; int choice; cin>>choice; switch(choice) {//这儿等等 case 1:cin>>cur->id;break; case 2:cin>>cur->name;break; case 3:cin>>cur->age;break; case 4:cin>>cur->id>>cur->name>>cur->age;break; } } cur=cur->next; } ofRead(cur->name,head); } int main() { Create(); cout<<"Do you want to modify the student information?(yes or no)"<<endl; string str("yes"); char choice[4]=""; cin>>choice; if(str==choice) { char name[10]=""; cout<<"input student's information table file name"<<endl; cin>>name; table* head=ifWrite(name); revise(head); } if(strcmp(choice,"no")==0) { cout<<"your operaion complete."<<endl; } }