结构体链表

来源:互联网 发布:淘宝冰点价怎么设置 编辑:程序博客网 时间:2024/06/03 19:46
#include<iostream>#define NULL 0using namespace std;struct student{int num;int score;struct student*next;};int n;int main(){student *creat(void);student*del(student*head,int num);student *insert(student*head,student*stud);void print();student *head,*stu;int del_num;cout<<"input record:"<<endl;head=creat();print();cout<<endl<<"input the deleted number:";cin>>del_num;while(del_num!=0){head=del(head,del_num);print();cout<<"input the deleted number:";cin>>del_num;}cout<<endl<<"input the insert record:";stu=new student;cin>>stu->num>>stu->score;while(stu->num!=0){head=insert(head,stu);print();cout<<endl<<"input the inserted record:";stu=new student;cin>>stu->num>>stu->score;}return 0;}student *creat(void){student *head;student *p1,*p2;n=0;p1=p2=new student;cin>>p1->num>>p1->score;head=NULL;while(p1->num!=0){n+=1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=new student;cin>>p1->num>>p1->score;}p2->next=NULL;return(head);}void print(){student *p,*head;    p=head;if(head!=NULL)do{cout<<p->num<<" "<<p->score<<endl;p=p->next;}while(p!=NULL);}student*del(student*head,int num){student*p1,*p2;if(head==NULL){cout<<"list null"<<endl;return(head);}p1=head;while(num!=p1->num&&p1->next!=NULL){p2=p1;p1=p1->next;}if(num==p1->num){if(p1==head)head=p1->next;else p2->next=p1->next;cout<<"delete:"<<num<<endl;n=n-1;}else cout<<"cannot find"<<num;return(head);}student *insert(student*head,student*stud){student *p0,*p1,*p2;p1=head;p0=stud;if(head==NULL){head=p0;p0->next=NULL;}else{while((p0->num>p1->num)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num<=p1->num){if(head==p1) head=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}n=n+1;return(head);}

原创粉丝点击