zoukankan      html  css  js  c++  java
  • 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
    ", list[i], data[list[i]], list[i + 1]);
        printf("%05d %d -1", list[sum - 1], data[list[sum - 1]]);
        return 0;
    }

    反思总结:

    1.对库的函数不是很熟悉。   打印常用的库,和对应的函数,最好背诵一下

    2.对c++,不熟练,要常练习

  • 相关阅读:
    2021/3/12
    2021/3/11
    2021/3/10
    2021/3/9
    2021/3/8
    2021/3/5
    2021/3/4
    2021/3/3
    2021/3/2
    2021/3/1
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10019056.html
Copyright © 2011-2022 走看看