单链表的创建及显示

来源:互联网 发布:买网络电视要注意什么 编辑:程序博客网 时间:2024/06/03 20:37

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;
}

Input

足球队员的记录。  

Output

头插法和尾插法创建单链表,从前向后的遍历记录。

Sample Input

zhao 182 22 Redqian 190 24 Greensun 179 23 Blueli 188 26 Redzhou 174 25 Bluewu 180 22 Greenzhao 182 22 Redqian 190 24 Greensun 179 23 Blueli 188 26 Redzhou 174 25 Bluewu 180 22 Green

Sample Output

wu 180 22 Greenzhou 174 25 Blueli 188 26 Redsun 179 23 Blueqian 190 24 Greenzhao 182 22 Redzhao 182 22 Redqian 190 24 Greensun 179 23 Blueli 188 26 Redzhou 174 25 Blue

wu 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;}


0 0