链表建立,插入,删除,输出

来源:互联网 发布:剑三成男痞气捏脸数据 编辑:程序博客网 时间:2024/05/06 06:17
#include <iostream>#include <iomanip>using namespace std;struct student{int num; float score;student *next;};int main(){student *creatlink(void);student *dellink(student *,long);student *insertlink(student *,student *);void printlink(student *);void freelink(student *);student *head,stu;long del_num;head=creatlink();cin>>del_num;head=dellink(head,del_num);cin>>stu.num>>stu.score;head=insertlink(head,&stu);cin>>stu.num>>stu.score;head=insertlink(head,&stu);cout<<setiosflags(ios::fixed);cout<<setprecision(2);printlink(head);freelink(head);return 0;}student *head;student *creatlink(void){student *p,*s;s=new student;cin>>s->num>>s->score;head=NULL;while(s->num!=0&&s->score!=0){  if(head==NULL)    head=s;  else  p->next=s;     p=s; s=new student;     cin>>s->num>>s->score;}p->next=NULL;delete s;return (head);}student *dellink(student *head,long number){student *p,*q;p=head;if(head==NULL)return (head);else{while(number!=p->num&&p->next!=NULL){q=p;p=p->next;}if(number==p->num){if(head==p)head=p->next;elseq->next=p->next;}}return(head);}student *insertlink(student *head,student *stu){student *p,*q,*s;    s=new student;s->num=stu->num;s->score=stu->score;   p=head;  if(head==NULL)   { head=s;   s->next=NULL;}   else   {   while((s->num>p->num)&&(p->next!=NULL))   {  q=p;       p=p->next;   }      if(s->num<=p->num)  { if(head==p)  {head=s;   s->next=p;   }    else{q->next=s;s->next=p;}    }   else   {   p->next=s;   s->next=NULL;   }   }return (head);}void printlink(student *head){    student *p;p=head;if(head!=NULL)while(p!=NULL){cout<<p->num<<' '<<setprecision(2)<<p->score<<endl;p=p->next;}}void freelink(student *head){student *p;p=head;delete p;}


Description
编写一个函数creatlink,用来建立一个动态链表。(包含学号和成绩)
编写一个函数printlink,用来输出一个链表。
编写一个函数dellink,用来删除动态链表中一个指定的结点(由实参指定某一学号,表示要删除该学生结点)。
编写一个函数insertlink,用来向动态链表插入一个结点。
编写一个函数freelink,用来释放一个动态链表。

Input
输入多个学生的学号和成绩,建立动态链表,以0 0 结束
输入学号,删除链表中的对应结点
插入两个链表结点

Output
输出的链表

Sample Input
1001 100
1002 95
1005 90
1008 76
0 0
1005
1006 98
1009 99
Sample Output
1001 100.00
1002 95.00
1006 98.00
1008 76.00
1009 99.00


 

0 0