PAT1025 反转链表
题目
给定一个常数以及一个单链表,请编写程序将中每个结点反转。例如:给定为1→2→3→4→5→6
为 3,则输出应该为3→2→1→6→5→4
;如果为 4,则输出应该为4→3→2→1→5→6
,即最后不到个元素不反转。
输入格式
每个输入包含 1 个测试用例。每个测试用例第 1 行给出第 1 个结点的地址、结点总个数正整数、以及正整数,即要求反转的子链结点的个数。结点的地址是 5 位非负整数,NULL 地址用表示。
接下来有 N 行,每行格式为:
plaintext
1 | Address Data Next |
其中Address
是结点地址,Data
是该结点保存的整数数据,Next
是下一结点的地址。
输出格式
对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。
输入样例
plaintext
1 | 00100 6 4 |
输出样例
plaintext
1 | 00000 4 33218 |
思路
定义Node结构体vector和map,填入数据。根据map对应的Node的next找到下一个节点,同时,每k个反转一次vector。
反转后结果输出就行。
思路很简单,就是不熟练STL用法。还有,想的太复杂了,想到实现一套单项链表,然后通过修改指针来达到反转效果,可惜逻辑过于复杂,没想到一个map搞定😅
代码
cpp
1 | //pat1025 |