题目描述
假设火车有n节车厢(从前往后编号依次为1,2,3,…,n),每节车厢的人数依次为M1,M2,M3,…,Mn。火车头的编号为0,连接在1号车厢上。火车进站后,将火车头从1号车厢卸下,接在第n节车厢上,反方向行驶。即火车的1号车厢为原来的第n号车厢,…,火车的n号车厢为原来的第1号车厢。请输出火车反向行驶后,每节车厢的人数。
c:
#include <stdio.h>
struct Train
{
int num;
Train *next;
};
Train *creat(int n){
Train *t=new Train;
scanf("%d",&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 ;
printf("%d ",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);
scanf("%d",&n);
head = creat(n);
head=rev(head);
print (head);
del(head);
return 0;
}
c++:
#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<stdio.h>
int main()
{
int a[19],n,i;
scanf("%d",&n);
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=n-1;i>=0;i--)
if(i==n-1)printf("%d",a[i]); else printf(" %d",a[i]);
}
解析
暂无