A代码填空题--更换火车头

题目描述
注:本题只需要提交填写部分的代码,请按照C++方式提交。
假设火车有n节车厢(从前往后编号依次为1,2,3,...,n),每节车厢的人数依次为M1,M2,M3,...,Mn。火车头的编号为0,连接在1号车厢上。火车进站后,将火车头从1号车厢卸下,接在第n节车厢上,反方向行驶。即火车的1号车厢为原来的第n号车厢,...,火车的n号车厢为原来的第1号车厢。请输出火车反向行驶后,每节车厢的人数。

#include <iostream>
using namespace std;
struct Train {
    int num;  //人数
    Train *next;
};
Train *creat(int n)
{
    Train *t=new Train;
    cin>>t->num ;
    if(n==1) {
        t->next = NULL;
        return t;
    }
    t->next = creat(n-1);
    return t;
}
void print(Train *p){
    if(p==NULL)
        return ;
    cout<<p->num<<" ";
    print(p->next);
}
void del(Train *p)
{
    if(p==NULL)
        return ;
    Train *t;
    t=p->next;
    delete p;
    del(t);
}
Train *rev(Train *p)
{
    Train *head=NULL,*t;
    while(p){
        t=p->next;      
        p->next = head; 
        head = p;       
/*******************************   
       请在该部分补充缺少的代码
********************************/
    }
    return head;
}

int main(void)
{
    int n;
    Train *head;
    Train *rev(Train *p);
    cin>>n;
    head = creat(n);
    head=rev(head);
    print (head);
    del(head);
    return 0;
}

输入
第一行 n
第二行 每节车厢的人数

输出
火车反向行驶后,每节车厢的人数。

样例输入
10 
110 112 108 100 118 100 60 64 56 62
样例输出
62 56 64 60 100 118 100 108 112 110


#include <iostream>  
using namespace std;  
struct Train  
{  
    int num;  
    Train *next;  
};  
Train *creat(int n)  
{  
    Train *t=new Train;  
    cin>>t->num ;  
    if(n==1)  
    {  
        t->next = NULL;  
        return t;  
    }  
    t->next = creat(n-1);  
    return t;  
}  
void print(Train *p)  
{  
    if(p==NULL)  
        return ;  
    cout<<p->num<<" ";  
    print(p->next);  
}  
void del(Train *p)  
{  
    if(p==NULL)  
        return ;  
    Train *t;  
    t=p->next;  
    delete p;  
    del(t);  
}  
Train *rev(Train *p)  
{  
    Train *head=NULL,*t;  
    while(p)  
    {  
        t=p->next;  
        p->next = head;  
        head = p;  
        p=t;  
    }  
    return head;  
}  
int main(void)  
{  
    int n;  
    Train *head;  
    Train *rev(Train *p);  
    cin>>n;  
    head = creat(n);  
    head=rev(head);  
    print (head);  
    del(head);  
    return 0;  
}  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值