【PAT甲级】1074. Reversing Linked List (25)
2017-06-22 16:53
453 查看
直接用一个矩阵order存储节点地址,再这个矩阵上进行翻转,不知道算不算投机取巧
#include <stdio.h> #include <iostream> using namespace std; struct Node { int e; int next; }; Node list[100000]; void swap(int *a, int i, int j); int main() { int start, len, k; cin >> start >> len >> k; for (int i = 0; i < len; i++) { int add, data, next; cin >> add >> data >> next; list[add].e = data; list[add].next = next; } int *order = new int[len]; int p = 0; for (int i = start; i != -1; i = list[i].next) { order[p++] = i; } for (int i = 0; i + k - 1 < p; i += k) { for (int j = i; j <= (2 * i + k - 1)/2; j++) { swap(order, j, 2 * i + k - 1 - j);//注意这里多加一个i } } for (int i = 0; i < p - 1; i++) { list[order[i]].next = order[i + 1]; } start = order[0]; list[order[p - 1]].next = -1; int i; for (i = start; list[i].next != -1; i = list[i].next) { printf("%05d %d %05d\n", i, list[i].e, list[i].next); } printf("%05d %d %d\n", i, list[i].e, list[i].next); return 0; } void swap(int *a, int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; return; }
相关文章推荐
- PAT甲级1074. Reversing Linked List (25)
- pat甲级1074. Reversing Linked List (25)、乙级1025. 反转链表 (25)
- 1074. Reversing Linked List (25)-PAT甲级真题
- PAT 甲级 1074. Reversing Linked List (25)
- 1025. 反转链表 (25)PAT乙级&&1074. Reversing Linked List (25)PAT甲级
- PAT - 甲级 - 1074. Reversing Linked List (25)(链表)
- PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作
- 【PAT】1074. Reversing Linked List (25)
- PAT 1074. Reversing Linked List (25)
- PAT 1074. Reversing Linked List (25)
- pat 1074. Reversing Linked List (25)
- Pat(A) 1074. Reversing Linked List (25)
- PAT甲题题解-1074. Reversing Linked List (25)-求反向链表
- PAT 1074. Reversing Linked List (25)
- PAT (Advanced Level) 1074. Reversing Linked List (25)
- 1074. Reversing Linked List (25)【链表翻转】——PAT (Advanced Level) Practise
- PAT 甲级 1133. Splitting A Linked List (25)
- 【C++】PAT (advanced level)1074. Reversing Linked List (25)
- PAT 1074. Reversing Linked List (25)
- 1097. Deduplication on a Linked List (25) PAT甲级