1. 程式人生 > >PAT02-線性結構3 Reversing Linked List

PAT02-線性結構3 Reversing Linked List

題目:https://pintia.cn/problem-sets/1010070491934568448/problems/1037889290772254722

先是看了牛客(https://www.nowcoder.com/questionTerminal/5f44c42fd21a42b8aeb889ab83b17ad0)的幾個程式碼,覺得很複雜,發現問題很多,用python寫內容真的不容易

後來找到一個相當簡潔的程式碼,真心點贊,地址:https://www.liuchuo.net/archives/463

#include <iostream>
#include <algorithm>
using
namespace std; int main() { int first, k, n, temp; cin >> first >> n >> k; int data[100005], next[100005], list[100005]; for (int i = 0; i < n; i++) { cin >> temp; cin >> data[temp] >> next[temp]; } int sum = 0;//不一定所有的輸入的結點都是有用的,加個計數器 while
(first != -1) { list[sum++] = first; first = next[first]; } for (int i = 0; i < (sum - sum % k); i += k) reverse(begin(list) + i, begin(list) + i + k); for (int i = 0; i < sum - 1; i++) printf("%05d %d %05d\n", list[i], data[list[i]], list[i + 1]); printf(
"%05d %d -1", list[sum - 1], data[list[sum - 1]]); return 0; }

 

反思總結:

1.對庫的函式不是很熟悉。   列印常用的庫,和對應的函式,最好背誦一下

2.對c++,不熟練,要常練習