按照链表节点输出。
如有错误敬请提出!
注释部分不用管!!
#include<bits/stdc++.h>
using namespace std;
typedef struct p{
char name[20];
int age;
char sdept[10];
struct p *next;
}par;
par *head;
void open1(){
par *p1,*p2;
head=new par;
p1=head;
ifstream fp("practise.txt",ios::in|ios::binary);
p2=new par;
//memset(p2,0,sizeof(par));
while(!fp.eof()){
//fp.read((char *)p2,sizeof(par));
fp>>p2->name>>p2->age>>p2->sdept;
p1->next=p2;
p1=p2;
p2=new par;
}
p1->next=NULL;
fp.close();
}
//输出
void shuchu(){
par *p;
p=head->next;
while(p!=NULL){
cout<<p->name<<" "<<p->age<<" "<<endl;
p=p->next;
}
}
删除
void shanchu(){
par *q,*p;
p=head;
q=head->next;
char s[20];
cout<<"输入删除的名字:";
cin>>s;
while(q!=NULL){
if(strcmp(s,q->name)==0){
p->next=q->next;
free(q);
break;
}else{
p=q;
q=q->next;
}
}
}
//查找
void chazhao(){
char s[10];
cout<<"输入名字:";
cin>>s;
par *q;
q=head->next;
while(q!=NULL){
//TODO
if(strcmp(s,q->name)==0){
cout<<q->name<<" "<<q->age<<" "<<q->sparept<<endl;
break;
}else{
q=q->next;
}
}
}
int main(){
open1();
shuchu();
}
文件中读取还可以使用下面语句(可以与上述代码open1()函数替换)
void open1(){
par *p1,*p2;
FILE *fp;
char q1[20],q2[20];
int q4;
head=new par;
p1=head;
fp=fopen("practise.txt","r");
p2=new par;
//memset(p2,0,sizeof(par));
while(fscanf(fp,"%s %d %s",q2,&q4,q1)!=EOF){
//fp.read((char *)p2,sizeof(par));
strcpy(p2->name,q2);
strcpy(p2->sparept,q1);
p2->age=q4;
p1->next=p2;
p1=p2;
p2=new par;
}
p1->next=NULL;
}
文件截图:
输出结果: