题目描述

已知一个单向链表各结点在存储器中的物理顺序,以及各结点之间的指向关系,要求输出该链表各结点的逻辑顺序。

如图所示的链表,共有6个结点,按这6个结点在存储器中的物理顺序依次编号为1~6。第1个结点的指针域为p4,表示它指向第4个结点。在该图中,符号“∧”表示空指针。

因此,这个链表6个结点的逻辑顺序为:6->1->4->2->5->3。

输入

输入文件中包含多个测试数据。每个测试数据描述了一个单向链表:第一行为一个自然数n,5≤n≤9,表示有n个结点;接下来有n行,第i+1行如果为pj,则表示第i个结点的指针域指向第j个结点,如果指针域为null,则表示空指针。输入文件最后一行为0,表示输入结束。

输入数据确保每个测试数据能表示一个合理的单向链表。

输出

对输入文件中的每个测试数据,输出n个结点的逻辑顺序,相邻两个结点之间用符号“->”连接。

样例输入

6
p4
p5
null
p2
p3
p1
0

样例输出

6->1->4->2->5->3

提示

copy的= - =

#include<iostream>
using namespace std;
char ch[5];
int t,st;
int a[9999];
struct node
{int id;int from;
}n[9999];
void dfs(int x,int y)
{if(y==t+1)return ;a[y]=n[x].id;dfs(n[x].from,y+1);
}
int main()
{while(cin>>t&&t){for(int i=1;i<=t;i++){cin>>ch;n[i].id=i;if(ch[0]!='n')n[ch[1]-'0'].from=n[i].id;else st = i;}dfs(st,1);cout<<a[t];for(int i=t-1;i>=1;i--){cout<<"->"<<a[i];}cout<<endl;}return 0;
}

链表结点的物理顺序与逻辑顺序相关推荐

  1. C++ 单链表基本操作分析与实现 链表   链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结

    C++ 单链表基本操作分析与实现 链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以 ...

  2. 数据结构:试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域ILink把所有结点按照其值从小到大的顺序连接起来

    题目 试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域ILink把所有结点按照其值从小到大的顺序连接起来 分析 Template < ...

  3. 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...

    还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...

  4. 一段顺序颠倒能读通的文字_钓鱼也有逻辑顺序,总是钓不到鱼的原因就在这里...

    总能见到很多钓鱼人在钓不到鱼的时候便说自己的饵料不好,于是不断的打听.研究各种饵料配方,但是最终依然钓获量不佳.还有很多钓鱼人认为,钓轻口鱼应该钓钝,因为这样能够让鱼更轻松地吸饵入嘴-- 其实这些错误 ...

  5. 【读书笔记】金字塔原理-构建金字塔的逻辑顺序

    至此,我们已经学会了如何搭建文章的总体架构.我们可以较快的确定文章的主题和读者可能提出的疑问,编辑好序言(开场白)中的"背景"和"冲突",提出问的中心思想和关键 ...

  6. 问题:编译策略之代码逻辑顺序不正确(Optimization Level)

    问题 曾经遇到过一个问题, 运行一段代码发现执行的逻辑顺序不正确, 而且在添加了其他语句后, 还会有不同的顺序, 但是都是不正确的. 如下: Debug 一下发现, 逻辑顺序为: 1> – 2& ...

  7. 金字塔原理(6)- 确定逻辑顺序

    1.确定逻辑顺序可以确保你不会     - 把新闻条目当作思想观点列入     - 遗漏某一组中重要的思想观点 2.任一组思想的逻辑顺序都反映了该组思想的分组基础     - 时间顺序:通过设想某一流 ...

  8. 《剑指offer》第十八题(在O(1)时间删除链表结点)

    // 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点. #include <iostream> ...

  9. 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]

    题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {int m_nKey;ListNode* m_pNext; }; 函数的声明如下 ...

最新文章

  1. 【重建】从FJOI2016一试谈起
  2. 独家 | 我们扒出了这家中国创业公司,竟比苹果iPhone X早两年推出黑科技,还不用借助深度摄像头
  3. python list同步删除
  4. Apache与Nginx的优缺点比较
  5. jvm在windows和linux,理解JVM如何使用Windows和Linux上的本机内存
  6. 使用Spring MVC,Mybatis框架等创建Java Web项目时各种前期准备的配置文件内容
  7. MySQL面试题中:主从同步的原理
  8. mysql for 循环删除_Java增强for循环中删除元素抛异常问题
  9. 400电话为什么叫免费电话?
  10. linux安装vmd软件步骤,VMD软件使用指南.PDF
  11. 安卓Android类原生系统官网集合
  12. Unity Gyro之使用陀螺仪实现简单VR全景环视效果
  13. Python数据分析高薪实战第四天 python数据采集下载和提取保存
  14. unity ShaderLab 基础之【像素混合Blend】Blend命令详解 shaderLab blend blendOp透明度颜色混合
  15. rpm和yum命令的区别
  16. Web前端开发与应用
  17. YOLOX部署优化训练
  18. 粉红色情人节表白浪漫婚礼相册PPT模板
  19. 关于数据治理的读书笔记 - 数据治理路线图规划
  20. 匹配博弈双边选择算法

热门文章

  1. 51单片机实战教程(32 人机界面编程9)
  2. Arduino UNO驱动合宙1.8‘TFT SPI屏幕示例演示(含资料包)
  3. 艺赛旗(RPA)Python:遍历输出某路径下的所有文件和文件夹
  4. visto VTL搭建
  5. 鱼眼校正c语言算法,一种鱼眼图像逆向经纬映射的快速校正算法
  6. 【嵌入式开源库】MultiButton的使用,简单易用的事件驱动型按键驱动模块
  7. jquery 堆栈溢出_带有jQuery和CSS3的漂亮照片堆栈库
  8. qt widget 最大_Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)
  9. ucos-III前言
  10. 囚徒困境困境_所以你现在看到了社会困境