单链表的创建及显示

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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值