1025. 反转链表 (25)
2016-02-14 21:02
253 查看
题目:http://www.patest.cn/contests/pat-b-practise/1025
注意点:
1.所提供的节点不一定为有效(即不一定是一条链)–该问题通过定义一个计数可解决
2.栈溢出,可能数组太大–未解决
代码:
注意点:
1.所提供的节点不一定为有效(即不一定是一条链)–该问题通过定义一个计数可解决
2.栈溢出,可能数组太大–未解决
代码:
#include <stdio.h> #define Size 1000 int main() { int m,n,k; int i,j,t=0,x; int a[Size][3],b[Size]; void change(int p[],int ,int ); void print(int o[][3],int w[],int,int); //输入 scanf("%d %d %d",&m,&n,&k); for (i=0;i<n;i++) { for (j=0;j<3;j++) scanf("%d",&a[i][j]); } //寻找有效节点数 x = m; for (i=0;i<n;i++) { for (j=0;j<n;j++) { if (a[j][0]==x) { t++; x = a[j][2]; break; } } } //置数组b for (i=0;i<t;i++) { for (j=0;j<n;j++) { if (a[j][0]==m) { b[i] = a[j][1]; m = a[j][2]; break; } } } // i = 0; j = t; while (t-k>=0) { change(b,i,k);//i为改变开始点,k为改变个数 i +=k; t = t-k; } print(a,b,n,j); return 0; } void change(int b[Size],int i,int k) { int c[Size]; int j,m=i; for (j=i+k-1;j>=i;j--) { c[m] = b[j]; m++; } for (j=i;j<k+i;j++) { b[j] = c[j]; } } void print(int a[Size][3],int b[Size],int n,int t) { int i,j; int c[Size]; for (i=0;i<t;i++) { for (j=0;j<n;j++) { if (a[j][1]==b[i]) { c[i] = a[j][0]; break; } } } for (i=0;i<t-1;i++) printf("%05d %d %05d\n",c[i],b[i],c[i+1]); printf("%05d %d -1\n",c[t-1],b[t-1]); }
相关文章推荐
- 代码的等价性
- UVA 1494 - Qin Shi Huang's National Road System(次小生成树)
- oracle数据库学习(二)
- iptables: Firewall modules are not loaded.
- 正则表达式
- javascript中的BOM和DOM
- hdu 1106 排序
- iOS面试题二
- 小故事:架构师需要做什么?
- 1034. 有理数四则运算
- 仿新闻图片浏览
- 蓝桥杯-开心的金明
- [Maven-不忘初心,方得始终] Maven-项目管理与构建
- 部署 Office Web Apps(3) - wopi host
- Android超类
- SpringMVC综合使用手机管理系统Controller层开发
- 出错函数用例
- 通用块设备驱动程序框架分析
- iOS面试题一
- 【机房重构】——数据库设计