题目:

给定一个单链表 L​1​​→L​2​​→⋯→L​n−1​​→L​n​​,请编写程序将链表重新排列为 L​n​​→L​1​​→L​n−1​​→L​2​​→⋯。例如:给定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是该结点保存的数据,为不超过10​5​​的正整数;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[];
using namespace std;
int main()
{
int start,n,sum=,add;
cin>>start>>n;
int pre[n];
int ans[n];
for(int i=;i<n;i++)
{
cin>>add;
cin>>node[add].key>>node[add].next;
}
int index=start;
for(int i=;index!=-;i++)
{
pre[i]=index;
index=node[index].next;
sum++;
}
for(int i=;i<sum;i++)
{
if(i%==){
ans[i]=pre[sum--i/];
}else{
ans[i]=pre[(i+)/-];
}
}
for(int i=;i<sum;i++)
{
if(i==){
printf("%05d %d ",ans[i],node[ans[i]].key);
continue;
}else{
printf("%05d\n",ans[i]);
printf("%05d %d ",ans[i],node[ans[i]].key);
}
}
cout<<"-1";
return ;
}

L2-022 重排链表(链表)的更多相关文章

  1. 【Warrior刷题笔记】143.重排链表 【线性化 || 双指针+翻转链表+链表合并】详细注释

    题目一 力扣143.重排链表 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reorder-list/ 1.描述 给定一个单链表L的头节点he ...

  2. 数据结构之链表-链表实现及常用操作(C++篇)

    数据结构之链表-链表实现及常用操作(C++篇) 0.摘要 定义 插入节点(单向链表) 删除节点(单向链表) 反向遍历链表 找出中间节点 找出倒数第k个节点 翻转链表 判断两个链表是否相交,并返回相交点 ...

  3. 剑指Offer03 逆序输出链表&链表逆序

    多写了个逆序链表 /************************************************************************* > File Name: ...

  4. 3.1链表----链表(Linked List)入门

    在分析链表之前,我们先来对之前的动态数组.栈.队列总结一下: (1)底层依托于静态数组 (2)依靠resize解决固定容量问题 (3)是一种假的的动态数据结构 1.什么是链表 可以从以下两个部分来理解 ...

  5. 数据结构:链表 >> 链表按结点中第j个数据属性排序(冒泡排序法)

    创建结点类,链表类,测试类 import java.lang.Object; //结点node=数据date+指针pointer public class Node { Object iprop; p ...

  6. [剑指offer] 14. 链表中倒数第K个节点+翻转+逆序打印+合并两个排序链表 + 链表相交(第一个公共节点) (链表)

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路:  两个指针,起始位置都是从链表头开始,第一个比第二个先走K个节点,当第一个走到链表尾时,第二个指针的位置就是倒数第k个节点.(两指针始终相 ...

  7. [LeetCode] 25. K 个一组翻转链表 ☆☆☆☆☆(链表)

    https://leetcode-cn.com/problems/reverse-nodes-in-k-group/solution/javadi-gui-fang-fa-100-by-chadriy ...

  8. 剑指offer-从尾到头打印链表-链表-python

    题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 把链表依次放入list里面,反向打印 # -*- coding:utf-8 -*- # class ListNode: # d ...

  9. 剑指offer-面试题25-合并两个排序的链表-链表

    /* 题目: 输入两个递增排序的链表,合并这两个链表并使新的链表中的节点依然是递增排序. 返回新链表的头节点. */ /* 思路: 1.返回的链表的头节点为两个链表中头节点数值更小的为链表1. 2.进 ...

  10. 剑指offer-面试题24-反转链表-链表

    /* 题目: 定义一个函数,输入链表的头结点,反转链表输出反转后链表的头节点. */ /* 思路: 记录当前节点的next和pre. 断开当前节点指向next的指针,指向pre. */ #includ ...

随机推荐

  1. Java基础—注解的使用

    1.注解的概述: 注解是用来替代配置文件的!你回忆一下,我们以前总是要写一些配置文件,例如web.xml你还记得么?里面要写<servlet>和<servlet-mapping> ...

  2. 镶嵌数据集 Mosaic Dataset 的常见数据组织方式

    镶嵌数据集是ESRI公司推出一种用于管理海量影像数据的数据模型,定义在GeoDatabase数据模型中. 它的常见数据组织方式有两种: 1. 源镶嵌数据集 Source Mosaic Dataset ...

  3. 带你从零学ReactNative开发跨平台App开发[expo 打包发布](八)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  4. leetCode题解之Contains Duplicate

    1.题目描述 2.题目分析 直接使用hashTable 计数,超过1 则返回true,最后返回 false即可. 3.代码 bool containsDuplicate(vector<int&g ...

  5. poj_3275 Ranking the cows

    Ranking the cows Description Each of Farmer John's N cows (1 ≤ N ≤ 1,000) produces milk at a differe ...

  6. Entity Framework工具POCO Code First Generator的使用

    在使用Entity Framework过程中,有时需要借助工具生成Code First的代码,而Entity Framework Reverse POCO Code First Generator是一 ...

  7. [UI] 精美UI界面欣赏[2]

    精美UI界面欣赏[2]

  8. [翻译] PJR Signature View

    PJR Signature View https://github.com/paritsohraval100/PJRSignatureDemo It is a UIView subclass by w ...

  9. 列表 ->join---> 字符串 转类型:x--->y类型 y(x)

    列表     ->join--->           字符串 转类型:x--->y类型        y(x)

  10. 微信JSSDK与录音相关的坑

    微信JSSDK与录音相关的坑 最近一直在做微信JSSDK与录音相关的功能开发, 遇到了各种奇尺大坑, 时不时冷不丁地被坑一道, 让我时常想嘶吼: "微信JSSDK就是个大腊鸡!!!!!!!! ...