PAT 1074. Reversing Linked List
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <unordered_map> using namespace std; class Node {
public:
int data;
int next;
Node() : data(), next() {}
Node(int d, int n):data(d), next(n){}
}; int reverse_help(int head, int k, unordered_map<int, Node>& mem) {
if (head == -) {
return -;
} int cur = head;
int prev= -;
while (cur != -) {
if (k == ) {
break;
}
int tmp = mem[cur].next;
mem[cur].next = prev;
prev = cur;
cur = tmp; k--;
}
mem[head].next = cur;
return prev;
} int reverse(int head, int k, unordered_map<int, Node>& mem, int n) {
if (head == -) {
return -;
} int nhead = -;
int cur = head;
int pre = -; while (cur != -) {
int t = reverse_help(cur, k, mem);
if (nhead == -) {
nhead = t;
}
if (pre != -) {
mem[pre].next = t;
}
pre = cur;
cur = mem[cur].next;
n -= k;
if (n < k) {
break;
}
} return nhead;
} void print(int head, unordered_map<int, Node>& mem) {
int cur = head;
while(cur != -) {
Node& cnode = mem[cur];
if (cnode.next != -) {
printf("%05d %d %05d\n", cur, cnode.data, cnode.next);
} else {
printf("%05d %d %d\n", cur, cnode.data, cnode.next);
}
cur = mem[cur].next;
}
} int count(int head, unordered_map<int, Node>& mem) {
int cnt = ;
int cur = head;
while(cur != -) {
cnt++;
cur = mem[cur].next;
}
return cnt;
} int main() { int head, n, k;
scanf("%d%d%d", &head, &n, &k); unordered_map<int, Node> mem; for (int i=; i<n; i++) {
int addr, data, next;
scanf("%d%d%d", &addr, &data, &next);
mem.insert(make_pair(addr, Node(data, next)));
} cout<<"===="<<endl;
print(head, mem);
cout<<"===="<<endl;
head = reverse(head, k, mem, count(head, mem));
print(head, mem); return ;
}
卧槽,敢再无聊点么,输入节点数据竟然有不含在链表里的节点数据。
PAT 1074. Reversing Linked List的更多相关文章
- PAT 1074 Reversing Linked List[链表][一般]
1074 Reversing Linked List (25)(25 分) Given a constant K and a singly linked list L, you are suppose ...
- PAT 1074. Reversing Linked List (25)
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...
- PAT 甲级 1074 Reversing Linked List (25 分)(链表部分逆置,结合使用双端队列和栈,其实使用vector更简单呐)
1074 Reversing Linked List (25 分) Given a constant K and a singly linked list L, you are supposed ...
- PAT Advanced 1074 Reversing Linked List (25) [链表]
题目 Given a constant K and a singly linked list L, you are supposed to reverse the links of every K e ...
- PAT (Advanced Level) 1074. Reversing Linked List (25)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- PAT甲题题解-1074. Reversing Linked List (25)-求反向链表
题意说的很清楚了,这种题的话,做的时候最好就是在纸上自己亲手模拟一下,清楚一下各个指针的情况, 这样写的时候就很清楚各个指针变量保存的是什么值. PS:一次AC哈哈,所以说自己动手在纸上画画还是很有好 ...
- 【PAT甲级】1074 Reversing Linked List (25 分)
题意: 输入链表头结点的地址(五位的字符串)和两个正整数N和K(N<=100000,K<=N),接着输入N行数据,每行包括结点的地址,结点的数据和下一个结点的地址.输出每K个结点局部反转的 ...
- PAT甲级1074 Reversing Linked List (25分)
[程序思路] 先根据地址按顺序读入节点,入栈,当栈里的元素个数等于k时全部出栈,并按出栈顺序保存,最后若栈不为空,则全部出栈并按出栈的稀饭顺序保存,最后输出各节点 注意:输入的节点中有可能存在无用节点 ...
- PAT A1074 Reversing Linked List (25 分)——链表,vector,stl里的reverse
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...
随机推荐
- html基础整理(01居中 盒子问题)
01 文字居中 将一段文字置于容器的水平中点,只要设置text-align属性即可: text-align:center; 02 容器水平居中 先为该容器设置一个明确宽度,然后将margin的水平 ...
- vue2.0用法技巧汇总
1.class拼接: 2.select下拉截取: <template> <!--vip班支付报名页面--> <div id="payRecordMain&quo ...
- SpringCloud2.0
一.网站架构演变过程 从传统架构(单体应用) 到 分布式架构(以项目进行拆分) 到 SOA架构(面向服务架构) 到 微服务架构 1) 传统架构: 其实就是SSH或者SSM,属于单点应用 ...
- Github概念理解备忘录
总结: add就是用来建立跟踪,添加文件到缓存区: commit就是把文件缓存区的文件正式加到本地库中: push就是把本地库更新到远程库中: git命令的操作要在仓库所在目录下进行才有效: 在Git ...
- USACO The Lazy Cow
题目描述 这是一个炎热的夏天,奶牛贝茜感觉到相当的疲倦而且她也特别懒惰.她要在她的领域中找到一个合适的位置吃草,让她能吃到尽可能多的美味草并且尽量只在很短的距离.奶牛贝茜居住的领域是一个 N×N 的矩 ...
- Mac 10.12安装VirtualBox
说明:用VirtualBox主要是能开无缝模式. 下载: (链接: https://pan.baidu.com/s/1i5y78Ct 密码: e3bq)
- Acronis
关于这个神奇的东西也没少折腾了我,这里是它的家:http://www.acronis.com/zh-cn/ 网上也看了一些,没有头绪,总之给我的感觉就是不明觉厉.这里小结自己的学到的一些东西,算是一整 ...
- DB2 Check Pending Script
转载 http://www.zinox.com/archives/144 Thanks to Max Petrenko of DB2 Toronto Lab for sharing a very us ...
- Nginx PHP fpm forbidden 原因
可能是标红目录层级不一致 location / { root /var/www/html/public; index index.php; } location ~ \.php$ { root /va ...
- Sublime 必知必会(持续更新)
1.格式化代码 Edit - Line - Reindent(中文路径则是:编辑 - 行 - 再次缩进) 2.分屏显示 view-layout-Columns:2(中文路径则是:查看 - 布局 - 列 ...