PAT basic 1025.2

来源:互联网 发布:c语言北京电脑学校 编辑:程序博客网 时间:2024/06/16 00:01
#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;}    /*        分析:输入样例正确连接顺序应该是:        00100 1 12309        12309 2 33218        33218 3 00000        00000 4 99999        99999 5 68237        68237 6 -1        还应该考虑输入样例中有不在链表中的结点的情况。所以用个sum计数~        而且,algorithm头文件里面有reverse函数可以直接调用~    */
原创粉丝点击