c++链表

  1 #include <iostream.h>
  2 
  3 struct fbplayer
  4 {
  5     int age;//年龄
  6     char name[20];//姓名
  7     int num;//编号
  8     float score;//综合评分
  9     fbplayer *next;
 10 };
 11 
 12 
 13 
 14 fbplayer *Input(int n)//输入
 15 {
 16     fbplayer *head  ;
 17     fbplayer *p1,*p2;
 18     int i;
 19     head= NULL;
 20 
 21     p2 = new fbplayer;
 22     for(i=1;i<=n;i++)
 23     {
 24         p1= new fbplayer;
 25         cout<<"年龄、姓名、编号、综合评分"<<endl;
 26         cin>>p1->age;
 27         cin>>p1->name;
 28         cin>>p1->num;
 29         cin>>p1->score;
 30         cout<<endl;
 31         if(i==1)head = p1;
 32         else p2->next = p1;
 33         p2 = p1;
 34     }
 35     p2->next = NULL;
 36     return head;
 37 }
 38 void  Output(fbplayer *head)//输出
 39 {
 40     fbplayer *p;
 41     p = head;
 42     while(p!=NULL)
 43     {
 44         cout<<"年龄:"<<p->age<<",姓名:"<<p->name<<",编号:"<<p->num<<",综合评分:"<<p->score<<endl;
 45         p = p->next;
 46     }
 47     cout<<endl;
 48 }
 49 
 50 void  Destroy(fbplayer *head)//销毁
 51 {
 52     fbplayer * p=head;
 53     fbplayer * t;
 54      while (p)
 55      {
 56           t=p;
 57           p=p->next;
 58           delete t ;
 59      }
 60 }
 61 
 62 fbplayer *sort(fbplayer *head)//冒泡排序
 63 {
 64     fbplayer *p,*p1,*p2,*p3;
 65     fbplayer h, t;
 66     if (head == NULL) return NULL;
 67     h.next=head;
 68     p=&h;
 69     while (p->next!=NULL)
 70     {
 71         p=p->next;
 72     }
 73     p=p->next=&t;
 74     while (p!=h.next)
 75     {
 76         p3=&h;
 77         p1=p3->next;
 78         p2=p1->next;
 79         while (p2!=p) 
 80         {
 81             if ((p1->score)>(p2->score))
 82             {
 83                 p1->next=p2->next;
 84                 p2->next=p1;
 85                 p3->next=p2;
 86 
 87                 p3=p2; 
 88                 p2=p1->next;
 89 
 90             } else {
 91                 p3=p1;
 92                 p1=p2;
 93                 p2=p2->next;
 94             }
 95         }
 96         p=p1;
 97     }
 98     while (p->next!=&t)
 99     {
100         p=p->next;
101     }
102     p->next=NULL;
103     return h.next;
104 }
105 
106 fbplayer *Insert(fbplayer *head)//插入
107 {
108     fbplayer *q=NULL;
109     fbplayer *p=NULL;
110     fbplayer *s=NULL;
111     q=head;//头结点
112     p=q;
113 
114     while(p!=NULL)//找到尾指针
115     {
116         q=p;
117         p=q->next;
118     }
119     s=new fbplayer;
120         
121     cout<<"请输入要插入的年龄、姓名、编号、综合评分"<<endl;
122     cin>>s->age;
123     cin>>s->name;
124     cin>>s->num;
125     cin>>s->score;
126     q->next=s;
127     s->next=p;
128     return head;
129 }
130 
131 fbplayer *Delete(fbplayer *head)//删除
132 {
133     fbplayer* q = head;
134     fbplayer* p = 0;
135  
136     int  x;
137     cout<<"请输入要删除球员的编号:";
138     cin>>x;
139  
140     while (q)
141     {
142         if (q->num==x)
143         {
144             if (!p)
145             {
146                 q = q->next;
147                 delete head;
148                 head = q;
149             }
150             else
151             {
152                 p->next = q->next;
153                 delete q;
154                 q = p->next;
155             }
156         }
157         else
158         {
159             p = q;
160             q = q->next;
161         }
162     }
163  
164     return head;
165 }
166 
167 
168 fbplayer *Find(fbplayer *head)//按编号查找
169 {
170     fbplayer *q;
171     q=head;
172     int x;
173     cout<<"请输入要查找球员的编号:";
174     cin>>x;
175     int flags = 1;
176     while(q!=NULL){
177         if(q->num ==x)
178         {
179             return q;
180             flags = 0;
181             break;
182         }
183         q = q->next;
184     }
185     if(flags = 1)q=0;
186     return q;
187     
188 }
189 void main()
190 {
191     
192     int n;
193     cout<<"请输入球员数目:";
194     cin>>n;
195     fbplayer *head = new fbplayer;
196     head = Input(n);
197     head = Insert(head);
198     Output(head);
199     head = sort(head);
200     Output(head);
201     cout<<Find(head)<<endl;
202     Output(head);
203     Destroy(head);
204 }

 

posted @ 2016-03-15 14:16  指间ゝ繁华初逝的格调  阅读(221)  评论(0编辑  收藏  举报