#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的更多相关文章

  1. PAT 1074 Reversing Linked List[链表][一般]

    1074 Reversing Linked List (25)(25 分) Given a constant K and a singly linked list L, you are suppose ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. PAT (Advanced Level) 1074. Reversing Linked List (25)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  6. PAT甲题题解-1074. Reversing Linked List (25)-求反向链表

    题意说的很清楚了,这种题的话,做的时候最好就是在纸上自己亲手模拟一下,清楚一下各个指针的情况, 这样写的时候就很清楚各个指针变量保存的是什么值. PS:一次AC哈哈,所以说自己动手在纸上画画还是很有好 ...

  7. 【PAT甲级】1074 Reversing Linked List (25 分)

    题意: 输入链表头结点的地址(五位的字符串)和两个正整数N和K(N<=100000,K<=N),接着输入N行数据,每行包括结点的地址,结点的数据和下一个结点的地址.输出每K个结点局部反转的 ...

  8. PAT甲级1074 Reversing Linked List (25分)

    [程序思路] 先根据地址按顺序读入节点,入栈,当栈里的元素个数等于k时全部出栈,并按出栈顺序保存,最后若栈不为空,则全部出栈并按出栈的稀饭顺序保存,最后输出各节点 注意:输入的节点中有可能存在无用节点 ...

  9. 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 ...

随机推荐

  1. 如何实现三个div都自适应(滴滴面试题)

    <div class="table"> <div class="accordant"> <div class="box& ...

  2. Ionic2 启动加载优化总结

    1. ionic2通过ionic serve生成的main.js大于4M,必须先build才能部署 npm run ionic:build --prod 之后main.js缩小为大概100K+ 2. ...

  3. package.json和bower的参数解释

    package.json和bower的参数解释   一.package.json解释: package.json是用来声明项目中使用的模块,这样新的环境部署时,只要在package.json文件所在的 ...

  4. day 09 课后作业

    # -*- coding: utf-8 -*-# @Time : 2018/12/28 14:25# @Author : Endless-cloud# @Site : # @File : 08 课后作 ...

  5. IDEA自动生成TestNG的testng.xml的插件

    某地方见到的,自己实际操作一遍,记录一下.方便以后查询. 下载Create TestNG XML 插件,重启IDEA即可. 重启idea,新建Maven项目. pom.xml增加依赖 <depe ...

  6. javascriptdocument load 和document ready的区别

    页面加载完成有两种事件,一是ready , 表示文档结构已经加载完成(貋图片等非文字媒体文件),二是onload 指示页面包含图片等文件在内的所有元素都加载完成.   1.执行时间不同: 从字面的意思 ...

  7. java transient 和Volatile关键字

    Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...

  8. 单独安装VS2012装mono for android

    直接安装个SQL Server2012,然后就可以单独安装VS2012 来用mono for android了.如果不想装,那就装以下这些东西. 广州-PC286() 11:05:28 和 x86  ...

  9. mongoDb数据库可视化工具 --- Robo

    工具下载: https://robomongo.org/download 最终效果: 即我们可以直接看到链接到 27017端口 的数据的所有数据,并且可以对其进行行之有效的增删查改. 注意,在下载软件 ...

  10. 装B 自卫神器 -

    IE内核下,使用XX插件 修改网页源代码直接无缝显示数据. 包括https FF同样. 截图: 可以修改所有客户端数据,用以迷惑他们.纯属娱乐 ``````` 再次,顺便提醒下. 做网赚的很多朋友,切 ...