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

    给定一个单链表 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 (≤)。结点的地址是5位非负整数,NULL地址用−表示。

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

    Address Data Next
    

    其中Address是结点地址;Data是该结点保存的数据,为不超过1的正整数;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

    不知道string的前导零怎么加上。。。还在思考。。。有大佬会吗

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<string>
     4 #include<map>
     5 #include<algorithm>
     6 #include <iostream>
     7 #include <iomanip>
     8 using namespace std;
     9 typedef long long ll;
    10 const int amn=1e5+5;
    11 
    12 struct book
    13 {
    14     int data;
    15     string add,next;
    16 } a[amn],b[amn];
    17 
    18 map<string,int> cnt;
    19 
    20 int main()
    21 {
    22     int n;char badd[10];
    23     cin>>badd>>n;
    24     for(int i=1; i<=n; i++)
    25     {
    26         cin>>a[i].add>>a[i].data>>a[i].next;
    27         cnt[a[i].add]=i;
    28     }
    29     int top=1;
    30 //    cout<<a[cnt[badd]].add;
    31     b[1].add=a[cnt[badd]].add;
    32     b[1].data=a[cnt[badd]].data;
    33     b[1].next=a[cnt[badd]].next;
    34     for(int i=1; i<n; i++)
    35     {
    36         if(cnt[b[top-1].next]==-1)continue;
    37         b[++top].add=a[cnt[b[top-1].next]].add;
    38         b[top].data=a[cnt[b[top-1].next]].data;
    39         b[top].next=a[cnt[b[top-1].next]].next;
    40     }
    41     //for(int i=1;i<=top;i++)cout<<b[i].data<<" ";
    42     for(int i=top,j=1;i>=j;i--,j++)
    43     {
    44         cout<<b[i].add<<" "<<b[i].data<<" "<<b[j].add<<endl;
    45         //i--,j++
    46         cout<<b[j].add<<" "<<b[j].data<<" "<<b[i-1].add<<endl;
    47     }
    48 }
  • 相关阅读:
    jquery 实现跨域的简单小例子;
    jquery 实现文字轮播滚动
    js jquery 上传文件格式大小判断简单总结
    js 文本编辑插件 wangEditor 的使用教程和总结
    vue项目结构介绍
    bootstrap select下拉框模糊搜索和动态绑定数据解决方法
    bootstrap实现下拉框select option 美爆了
    jquery 获得select下拉框选择中的属性值
    Nginx + uWSGI 配置django---终极版
    django全文检索
  • 原文地址:https://www.cnblogs.com/Railgun000/p/10603411.html
Copyright © 2011-2022 走看看