Description
为足球队员建立记录,要有姓名、身高、年龄、所属俱乐部。
请创建一个单链表存储并
输出。注意
:两种实现方式,头插法创建及尾插法创建。单链表
结构体结点如下:
struct FootballPlayer
{
char name[20];
int height;
int age;
char club[20];
FootballPlayer *next;
};
参考函数如下:
void CreateFromHead(FootballPlayer
*
&f);
void CreateFromTail(FootballPlayer *&f);
void Show(FootballPlayer
*
f);
主函数如下,请勿修改。
int main()
{
int n,i;
FootballPlayer *head;
head=NULL;
n=6;
for(i=0;i<n;i++)
CreateFromHead(head);
Show(head);
head=NULL;
for(i=0;i<n;i++)
CreateFromTail(head);
Show(head);
return 0;
}
{
int n,i;
FootballPlayer *head;
head=NULL;
n=6;
for(i=0;i<n;i++)
CreateFromHead(head);
Show(head);
head=NULL;
for(i=0;i<n;i++)
CreateFromTail(head);
Show(head);
return 0;
}
Input
足球队员的记录。
Output
头插法和尾插法创建单链表,从前向后的遍历记录。
Sample Input
zhao 182 22 Red
qian 190 24 Green
sun 179 23 Blue
li 188 26 Red
zhou 174 25 Blue
wu 180 22 Green
zhao 182 22 Red
qian 190 24 Green
sun 179 23 Blue
li 188 26 Red
zhou 174 25 Blue
wu 180 22 Green
Sample Output
wu 180 22 Green zhou 174 25 Blue li 188 26 Red sun 179 23 Blue qian 190 24 Green zhao 182 22 Red zhao 182 22 Red qian 190 24 Green sun 179 23 Blue li 188 26 Red zhou 174 25 Bluewu 180 22 Green
具体见代码
#include<iostream> #include<stdlib.h> #include<string.h> using namespace std; struct FootballPlayer { char name[20]; int height; int age; char club[20]; FootballPlayer *next; }; void CreateFromHead(FootballPlayer *&f) //头插法 { FootballPlayer *p; p=(FootballPlayer*)malloc(sizeof(FootballPlayer)); cin>>p->name; cin>>p->height; cin>>p->age; cin>>p->club; p->next=f; //插到头部 所以最后输出的时候应该是反序输出的 f=p; //f的地址一直指向头的位置 } void CreateFromTail(FootballPlayer *&f) { int i=0; FootballPlayer *pr,*p; pr=(FootballPlayer*)malloc(sizeof(FootballPlayer)); cin>>pr->name; cin>>pr->height; cin>>pr->age; cin>>pr->club; if(f==NULL) { f=pr; //保护头地址 保证f指向头地址 } else { p->next=pr; //尾插 } p=pr; //保证P一直指向链表的最后一项 } void Show(FootballPlayer *f) { while(f!=NULL) { cout<<f->name<<" " <<f->height<<" " <<f->age<<" " <<f->club <<endl; f=f->next; } cout<<endl; } int main() { int n,i; FootballPlayer *head; head=NULL; n=6; for(i=0;i<n;i++) CreateFromHead(head); Show(head); head=NULL; for(i=0;i<n;i++) CreateFromTail(head); Show(head); return 0; }