15-7-22 Oj-更换火车头
来源:互联网 发布:重庆办公软件培训班 编辑:程序博客网 时间:2024/06/06 03:49
问题及代码:
/** 问题:* 假设火车有n节车厢(从前往后编号依次为1,2,3,...,n),每节车厢的人数依次为M1,M2,M3,...,Mn。* 火车头的编号为0,连接在1号车厢上。火车进站后,将火车头从1号车厢卸下,接在第n节车厢上,反方向行驶。* 即火车的1号车厢为原来的第n号车厢,...,火车的n号车厢为原来的第1号车厢。请输出火车反向行驶后,每节车厢的人数。*/#include <iostream>#include <windows.h>using namespace std;struct Train { int num; //人数 Train *next;};/**********************************************************************功能描述:往车厢里面装人,用了简单的递归算法实现反复输入。 使用了静态变量,目的是重复调用函数时不取消变量的值*输入参数:整型变量,代表车厢数*输出参数:Train类的指针变量,最终返回的代表车头(第0节车厢)的地址*********************************************************************/Train *creat(int n){ static int i=0; if(i==0) { cout<<"请输入车头人数:"; i++; } else cout<<"请输入车厢"<<i++<<"人数:"; Train *t=new Train; cin>>t->num ; if(n==1) { t->next = NULL; return t; } t->next = creat(n-1); return t;}/***************************************************************功能描述:输出每节车厢的人数信息*输入参数:Train类的指针变量,代表车头的地址,从车头开始输出*输出参数:Train的指针变量,最终返回的代表车头的地址*************************************************************/void print(Train *p){ static int i=0; if(p==NULL) return ; if(i==0) { cout<<"车头人数:"<<p->num<<endl; i++; } else cout<<"车厢"<<i++<<"人数:"<<p->num<<endl; print(p->next);}/***************************************************************功能描述:删除每节车厢因为输入人数时动态分配的内存空间*输入参数:Train类的指针变量,代表车头的地址,从车头开始删除*输出参数:无**************************************************************/void del(Train *p){ if(p==NULL) return ; Train *t; t=p->next; delete p; del(t);}/**************************************************************功能描述:将车头调转到车尾,将车头逐个和下一节车厢调换位置*输入参数:Train类的指针变量,代表车头的地址。*输出参数:无*************************************************************/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 j; int n; Train *head; Train *rev(Train *p); cout<<"请输入车厢数:"; cin>>n; head = creat(n); head=rev(head); cout<<"车头调转中"; for(j=0;j<7;j++) { cout<<'.'; Sleep(150); } cout<<endl; cout<<"车头调转后,各车厢人数为:"<<endl; print (head); del(head); return 0;}
运行结果:
小结:
和最近做的链表感觉很像。
因为明天考试去Oj刷了下题,前面都挺顺利,就这题,卡了我半小时,一直想搞明白他写的那些函数都是什么意思。
在几次反复看了之后终于明白,加了一条p=t语句程序就成了,感觉这题不错,应该发一下博客。
加油~
0 0
- 15-7-22 Oj-更换火车头
- YTU 2607: A代码填空题--更换火车头
- 火车头采集
- centos6.7更换源
- centos6.7更换jdk
- 火车头采集图文教程
- 火车头采集器
- 火车头采集器
- 【tyvj1387】 迷你火车头 DP
- XJOI 迷你火车头
- tyvj 1387 迷你火车头
- 火车头采集退出
- 火车头采集案例
- 第15周 oj-7
- Ubuntu实践(7):更换内核
- centos6.7更换yum源
- CentOS 7更换yum源
- centos 7 更换yum源
- hd1234
- Android的NDK开发(6)——如何定位Android NDK开发中遇到的错误
- IOS - 修改头像
- [ASP.NET MVC 小牛之路]07 - URL Routing
- SVN Commit Failed Transaction is out of date问题
- 15-7-22 Oj-更换火车头
- C#基础回顾:正则表达式
- java中的反射 2.4——类:常见问题@译自Oracle官方文档
- static、final修饰符、内部类
- OC学习之类的进阶
- XAMPP Error: Apache shutdown unexpectedly
- Mysql连接数据库封装类
- hdu1241
- Spring(一)Spring相关概念理解及环境搭建