zoukankan      html  css  js  c++  java
  • 1133 Splitting A Linked List (25 分)

    1133 Splitting A Linked List (25 分)

    Given a singly linked list, you are supposed to rearrange its elements so that all the negative values appear before all of the non-negatives, and all the values in [0, K] appear before all those greater than K. The order of the elements inside each class must not be changed. For example, given the list being 18→7→-4→0→5→-6→10→11→-2 and K being 10, you must output -4→-6→-2→7→0→5→10→18→11.

    Input Specification:

    Each input file contains one test case. For each case, the first line contains the address of the first node, a positive N (105​​) which is the total number of nodes, and a positive K (103​​). The address of a node is a 5-digit nonnegative integer, and NULL is represented by 1.

    Then N lines follow, each describes a node in the format:

    Address Data Next
    

    where Address is the position of the node, Data is an integer in [105​​,105​​], and Next is the position of the next node. It is guaranteed that the list is not empty.

    Output Specification:

    For each case, output in order (from beginning to the end of the list) the resulting linked list. Each node occupies a line, and is printed in the same format as in the input.

    Sample Input:

    00100 9 10
    23333 10 27777
    00000 0 99999
    00100 18 12309
    68237 -6 23333
    33218 -4 00000
    48652 -2 -1
    99999 5 68237
    27777 11 48652
    12309 7 33218
    

    Sample Output:

    33218 -4 68237
    68237 -6 48652
    48652 -2 12309
    12309 7 00000
    00000 0 99999
    99999 5 23333
    23333 10 00100
    00100 18 27777
    27777 11 -1
    思路
      中间有一个测试点输出结果只有一个结点,导致我调了很久。
    #include<iostream>
    #include<string>
    #include<vector>
    #include<string>
    #include<cstdio>
    #include<cmath>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    
    struct Node
    {
        int address;
        int data;
        int next;
    };
    
    Node node[10000010];
    int main()
    {
        int address,n,k;
        scanf("%d%d%d",&address,&n,&k);
        for(int i=0; i<n; i++)
        {
            Node temp;
            scanf("%d%d%d",&temp.address,&temp.data,&temp.next);
            node[temp.address]=temp;
        }
        vector<Node> v1,v2,v3;
        for(int i=address; i!=-1; i=node[i].next)
        {
            if(node[i].data<0)
                v1.push_back(node[i]);
            else if(node[i].data<=k)
                v2.push_back(node[i]);
            else
                v3.push_back(node[i]);
        }
        v1.insert(v1.end(),v2.begin(),v2.end());
        v1.insert(v1.end(),v3.begin(),v3.end());
        for(int i=1;i<v1.size();i++)
        {
            printf("%05d %d %05d
    ",v1[i-1].address,v1[i-1].data,v1[i].address);
            if(i==v1.size()-1)
                printf("%05d %d -1
    ",v1[i].address,v1[i].data);
        }
        if(v1.size()==1)
            printf("%05d %d -1
    ",v1[0].address,v1[0].data);
        return 0;
    }
     
  • 相关阅读:
    HDU6768 The Oculus(Hash)
    HDU6672 Lead of Wisdom(爆搜)
    外一章
    深度学习笔记一
    ACM International Collegiate Programming Contest, Arab Collegiate Programming Contest 2013
    python局部变量&全局变量
    每日日报
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/zhanghaijie/p/10371349.html
Copyright © 2011-2022 走看看