zoukankan      html  css  js  c++  java
  • L2-022 重排链表(链表)

    题目:

    给定一个单链表 L1​​→L2​​→⋯→Ln1​​→Ln​​,请编写程序将链表重新排列为 Ln​​→L1​​→Ln1​​→L2​​→⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。

    输入格式:

    每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (10^5^)。结点的地址是5位非负整数,NULL地址用-1表示。5​​)。结点的地址是5位非负整数,NULL地址用1表示。

    接下来有N行,每行格式为:

    Address Data Next
    

    其中Address是结点地址;Data是该结点保存的数据,为不超过105​​的正整数;Next是下一结点的地址。题目保证给出的链表上至少有两个结点。

    输出格式:

    对每个测试用例,顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。

    输入样例:

    00100 6
    00000 4 99999
    00100 1 12309
    68237 6 -1
    33218 3 00000
    99999 5 68237
    12309 2 33218
    

    输出样例:

    68237 6 00100
    00100 1 99999
    99999 5 12309
    12309 2 00000
    00000 4 33218
    33218 3 -1
    

    思路:

            和我写的上一篇思路差不多,只要是这种链表重新排序的题,好像一般就先把输入存入结构体数组,然后从第一个结点的地址开始顺着把链表捋一遍,每个结点的地址按顺序存入一个数组,然后按要输出的顺序重新排一下这些地址,再按着重排后的地址输出就行了。嘿嘿嘿,又发现一个套路^^

    上代码:

    #include <iostream>
    #include <algorithm>
    struct NODE{
        int key,next;
    }node[100005];
    using namespace std;
    int main()
    {
        int start,n,sum=0,add;
        cin>>start>>n;
        int pre[n];
        int ans[n];
        for(int i=0;i<n;i++)
        {
            cin>>add;
            cin>>node[add].key>>node[add].next;
        }
        int index=start;
        for(int i=0;index!=-1;i++)
        {
            pre[i]=index;
            index=node[index].next;
            sum++;
        }
        for(int i=0;i<sum;i++)
        {
            if(i%2==0){
                ans[i]=pre[sum-1-i/2];
            }else{
                ans[i]=pre[(i+1)/2-1];
            }
        }
        for(int i=0;i<sum;i++)
        {
            if(i==0){
                printf("%05d %d ",ans[i],node[ans[i]].key);
                continue;
            }else{
                printf("%05d
    ",ans[i]);
                printf("%05d %d ",ans[i],node[ans[i]].key);
            }
        }
        cout<<"-1";
        return 0;
     } 
  • 相关阅读:
    最近出现很多数据库被攻击案例,在数据库中的文本型字段中加入了script代码
    深入线程,实现自定义的SynchronizationContext
    云计算 (转载)
    VS 2008和.NET 3.5 Beta2新特性介绍(转载)
    js对文字进行编码涉及3个函数
    Sharepoint,MOSS,多语言Webpart (.net2.0)
    Silverlight Toolkit
    Silverlight 2.0正式版下周发布
    搭建Silverlight2.0开发环境(转载)
    如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置
  • 原文地址:https://www.cnblogs.com/littleLittleTiger/p/10603905.html
Copyright © 2011-2022 走看看