• PAT(Advanced Level)A1133. Splitting A Linked List


    题意

    要让链表里的所有负数的结点排在非负数的前面,以及让所有的[0, K]的数字放在(k, ∞)的前面,而且要保持相对顺序不变。保证链表不为空

    思路

    • 依次遍历链表的每个结点进行标记,第一趟取出负数,第二趟取出[0, K]内的数字,第三趟取出剩下没有取的数字,标记的方式是令data = 100010,已知data的值域在[-10^5, 10^5]

    代码

    #include <iostream>
    #include <algorithm>
    #include <unordered_map>
    #include <vector>
    #include <cmath>
    using namespace std;
    struct node {
        int address;
        int data;
        int next;
    }linked_list[100100];
    int main() {
        int st, N, K;
        scanf("%d %d %d", &st, &N, &K);
        int ads, val, next;
        for(int i = 0; i < N; i++) {
            scanf("%d %d %d", &ads, &val, &next);
            linked_list[ads] = {ads, val, next};
        }
        // 存放最后结果
        vector<node> ans;
        
        // 找<0的数字
        int cur = st;
        while(cur != -1) {
            if(linked_list[cur].data < 0) {
                ans.emplace_back(node{linked_list[cur].address, linked_list[cur].data, linked_list[cur].next});
            }
            cur = linked_list[cur].next;
        }
        
        // 找[0, K]的数字
        cur = st;
        while(cur != -1) {
            if(linked_list[cur].data >= 0 && linked_list[cur].data <= K) {
                ans.emplace_back(node{linked_list[cur].address, linked_list[cur].data, linked_list[cur].next});
            }
            cur = linked_list[cur].next;
        }
        
        // 找剩下的数字
        cur = st;
        while(cur != -1) {
            if(linked_list[cur].data > K)
            ans.emplace_back(node{linked_list[cur].address, linked_list[cur].data, linked_list[cur].next});
            cur = linked_list[cur].next;
        }
        for(int i = 0; i < ans.size() - 1; i++) {
            printf("%05d %d %05d
    ", ans[i].address, ans[i].data, ans[i + 1].address);
        }
        printf("%05d %d %d", ans.back().address, ans.back().data, -1);
        return 0;
    }
    

    P

    如有转载,请注明出处QAQ
  • 相关阅读:
    《Maven实战》第6章 仓库
    Log4j2中的同步日志与异步日志
    CSDN VIP如何添加自定义栏目
    CSDN VIP如何添加引流自定义栏目
    kubernetes垃圾回收器GarbageCollector Controller源码分析(二)
    java图形验证码实现
    java这个404你能解决吗?
    innodb笔记
    java项目启动脚本
    服务器初始化脚本
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/14526207.html
Copyright © 2020-2023  润新知