PAT甲题题解-1074. Reversing Linked List (25)-求反向链表
2024-10-15 09:31:46
题意说的很清楚了,这种题的话,做的时候最好就是在纸上自己亲手模拟一下,清楚一下各个指针的情况,
这样写的时候就很清楚各个指针变量保存的是什么值。
PS:一次AC哈哈,所以说自己动手在纸上画画还是很有好处的~
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <cmath>
#include <queue>
using namespace std;
const int maxn=+; struct Node{
int data;
int next;
}node[maxn],ans[maxn];
int main()
{
int first,n,k;
int addr,data,next;
scanf("%d %d %d",&first,&n,&k);
for(int i=;i<n;i++){
scanf("%d %d %d",&addr,&data,&next);
node[addr].data=data;
node[addr].next=next;
}
int p=first;
int lastRear=-;//上K个节点的最后节点的地址
int newfirst; //新链表的首地址
while(p!=-){
int head,last;
head=last=p;
int tmp=head;
//用于判断剩余的节点个数是否>=k个
for(int i=;i<k- && tmp!=-;i++){
tmp=node[tmp].next;
}
//若剩余节点<k,则按原来的顺序即可
if(tmp==-){
ans[lastRear].next=p;
while(p!=-){
ans[p].data=node[p].data;
ans[p].next=node[p].next;
lastRear=p;
p=node[p].next;
}
break;
} for(int i=;i<k && p!=-;i++){
ans[p].data=node[p].data;
if(i!=)
ans[p].next=last;//后一个指向前一个
last=p;
p=node[p].next;
}
if(lastRear!=-){
ans[lastRear].next=last; //上K个节点的末尾指向当前K个节点的最后一个
}
else{
newfirst=last; //新链表的首地址
}
lastRear=head; //反转,头部变成了末尾
}
ans[lastRear].next=-; while(newfirst!=-){
if(ans[newfirst].next!=-)
printf("%05d %d %05d\n",newfirst,ans[newfirst].data,ans[newfirst].next);
else
printf("%05d %d %d\n",newfirst,ans[newfirst].data,ans[newfirst].next);
newfirst=ans[newfirst].next;
}
return ;
}
最新文章
- UVA 10815
- ArcGIS中的北京54和西安80投影坐标系详解
- iOS 开发压缩--SSZipArchive
- 为什么我要称自己为Javascript程序员
- spoj 2
- [Cocos2d-x v3.x]序列帧动画
- VS2010中经常使用的快捷键
- MVC中关于JSON的处理
- C语言笔记之结构体
- 64位WIN7+oracle11g+plsql
- asp.net mvc上传头像加剪裁功能
- php学习的第8天
- 在asp.net web api 2 使用 Serilog 记录日志
- Spark RPC框架源码分析(三)Spark心跳机制分析
- Linq:使用Take和Skip实现分页
- 【LeetCode算法-7】Reverse Integer
- 铁板纹理 Base Shape
- January 12th, 2018 Week 02nd Friday
- dedecms调用全站相关文章怎么设置
- 简单全局HOOK拦截大部分键盘消息
热门文章
- November 08th, 2017 Week 45th Wednesday
- layui 弹出层监听 判断弹出框的大小
- shiro实战系列(十)之Subject
- jenkins自动部署到tomcat报错:ERROR: Publisher hudson.plugins.deploy.DeployPublisher aborted due to exception
- vector使用小结
- monitorix(linux)系统和网络监控公工具
- golang sqlite3 CRUD
- Scala--映射和元组
- struts2_Interceptor
- 2017-2018-1 20155202 张旭 嵌入式C语言——时钟提取时分秒