是否可以反转包含循环的链表?

2024-04-20

我正在看一些面试问题,其中一个要求反转包含循环的链表。所以假设我有一个如下所示的链接列表:

          F <- E
          |    /\
          V    |
A -> B -> C -> D 

然后反转列表将创建以下内容:

          F -> E
         /\    |
          |    V
A <- B <- C <- D

这里的问题是 C 应该指向的节点之间存在冲突。那么我们是否可以消除 C 和 F 之间的联系呢?


从数学上讲,您可以将链表(可能包含循环)视为从一组节点到其自身的部分函数,​​其中每个节点映射到其后继节点,并且每个节点最终都可以从起始节点到达。 (最后一个节点没有后继节点)。反转链接列表将需要反转此函数,因为跟随链接然后向后遍历它应该最终回到开始的地方。

如果链表不包含循环,则该部分函数是单射的(一对一),这意味着没有两个节点映射到相同的后继节点。单射函数确实可以反转,这就是为什么您可以反转常规链表。但是,如果列表包含一个循环(并且不仅仅是一个大循环),则有两个节点具有相同的后继,因此该函数不是单射的,因此没有逆函数。所以不,如果列表有循环,您不能反转链表并期望得到另一个链表。

但是,如果将链表视为更通用的图,其中每个节点可以具有任意数量的传入或传出边,则逆过程确实存在。它不再是一个链接列表了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以反转包含循环的链表? 的相关文章

  • 如何从二叉搜索树中均匀随机地返回节点?

    给定一个 BST 可能平衡也可能不平衡 如何能够均匀地随机返回 任何 节点 一个限制是您不能使用外部索引数据结构 您必须以每个节点都有平等被访问的机会的方式遍历树 这个问题让我困惑了好一阵子 如果我们确实可以使用外部哈希表 指针 我们可以对
  • 搜索/排序算法 - 是否有类似 GoF 的列表?

    我是一名自学成才的开发人员 坦率地说 我不太擅长找出在任何特定情况下使用哪种搜索或排序算法 我只是想知道是否有设计模式 esque 列出了以太坊中可用的常见算法 供我添加书签 就像是 算法名称 带有别名 如果有的话 它解决的问题 大O成本
  • 从 python 中的缩进文本文件创建树/深度嵌套字典

    基本上 我想迭代一个文件并将每行的内容放入一个深层嵌套的字典中 其结构由每行开头的空格数量定义 本质上 目标是采取这样的事情 a b c d e 并将其变成这样的东西 a b c d e Or this apple colours red
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • Exposé 布局算法

    我正在制作一些项目 其布局类似于 Mac OS X 在 Expos 中对窗口所做的操作 它适应项目的长宽比和可用区域的长宽比 基本上 可用区域分为行和列 每个单元格 行和列的交集 中放置一个项目 这些项目必须保持其纵横比 此处width h
  • 什么时候使用哈希表?

    什么情况下使用哈希表可以提高性能 什么情况下不能 哪些情况不适合使用哈希表 什么情况下使用哈希表可以提高性能 什么情况下不能 如果您有理由关心 请使用哈希表和您正在考虑的其他任何内容来实现 将您的实际数据放入其中 并衡量哪个性能更好 也就是
  • 在 Java 中实现排列算法的技巧

    作为学校项目的一部分 我需要编写一个函数 该函数将接受整数 N 并返回数组 0 1 N 1 的每个排列的二维数组 该声明看起来像 public static int permutations int N 该算法描述于http www usn
  • 字符串排序真的是 O(n^2logn) 吗? [复制]

    这个问题在这里已经有答案了 我读了以下内容 排序需要 O NlogN 那么它怎么是 O N 2logN 我们在这里想念的是 两个字符串的比较不是 O 1 在最坏的情况下 需要 在 所以最终的复杂度是O N 2logN 它是否正确 我一直认为
  • 在 O(n) 时间内找到 n x n 矩阵中的局部最小值

    所以 这不是我的家庭作业问题 而是取自 coursera 算法和数据结构课程的未评分作业 现已完成 You are given an n by n grid of distinct numbers A number is a local m
  • 检索受“rowspan”影响的行的列索引的最有效方法是什么?

    考虑下表 table thead tr th th th A th th B th th C th tr thead tbody tr th 1 th td Apples td td Oranges td td Pears td tr tb
  • 在 Python 中进行模糊键查找的最佳方法?

    我遇到一个问题 我需要在哈希映射中进行模糊查找 即返回与最接近查询的键相对应的值 在我的例子中是通过 Levenshtein 距离测量的 我目前的方法是子类化dict使用特殊的查找方法计算所有键的编辑距离 然后返回得分最低的键的值 基本上是
  • 在 C++ 中通过引用传递 std 算法谓词

    我正在尝试从 a 中删除元素std list并保留已删除元素的一些统计信息 为此 我使用列表中的remove if 函数 并且我有一个谓词 我想使用这个谓词来收集统计数据 这是谓词的代码 class TestPredicate privat
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • C 埃及分数

    古埃及人仅使用以下形式的分数1 n因此任何其他分数都必须表示为这些单位分数的总和 而且 所有单位分数都是不同的 在C或Java中使任何分数成为埃及分数 总和越少越好 的好方法是什么 可以使用什么算法 分支定界 a 例如 3 4 1 2 1
  • 7 张牌扑克手牌评估器

    有谁知道评估 7 张牌扑克牌的快速算法吗 这比简单地暴力检查 7 张牌中每 21 个 5 张牌的组合更有效 Cheers Pete 我写了一篇JavaScript 核心评估方法仅使用位操作 因此速度非常快 考虑到这一点 查看 21 种组合还
  • 使用并集查找(又名不相交集)检测图是否是二分图

    我正在 Spoj 上做一个问题 基本上可以简化为检测图是否是二分图 我正在尝试使用 dfs 为图表着色 但它太慢了 有人评论这个 没有 bfs 没有 dfs 没有二部图 简单的并查集就可以做到 确实速度很快 提示 1 偶数长度的环不会影响两
  • 数学组合的完美最小哈希

    首先定义两个整数N and K where N gt K 两者都在编译时已知 例如 N 8 and K 3 接下来 定义一组整数 0 N or 1 N 如果这使答案更简单 并调用它S 例如 0 1 2 3 4 5 6 7 的子集数量S wi
  • 时间序列数据预处理 - numpy strides 技巧以节省内存

    我正在预处理一个时间序列数据集 将其形状从二维 数据点 特征 更改为三维 数据点 时间窗口 特征 在这样的视角中 时间窗口 有时也称为回顾 指示作为输入变量来预测下一个时间段的先前时间步长 数据点的数量 换句话说 时间窗口是机器学习算法在对
  • 解释这段代码的工作原理;子进程如何返回值以及在哪里返回值?

    我不明白子进程如何返回该值以及返回给谁 输出为 6 7 问题来源 http www cs utexas edu mwalfish classes s11 cs372h hw sol1 html http www cs utexas edu

随机推荐

  • Cocoa 结构体和 NSMutableArray

    我有一个 NSMutableArray 我正在尝试存储和访问一些结构 我该怎么做呢 addObject 给我一个错误 说 addObject 的参数 1 的类型不兼容 这是一个示例 in 是 NSFileHandle array 是 NSM
  • 在 Windows 8/10 上调用静态链接函数每次都会崩溃,但在 Windows 7 上则不然

    问题 我已经建立了https github com reorg pg repack https github com reorg pg repack生成二进制文件的项目 该二进制文件与 postgres 9 6 可再发行组件链接 我使用由
  • 使用 @EmbeddedKafka 时执行 @DirtiesConfig 的正确方法是什么

    我们的项目中有一个 小 问题 无法建立与节点 0 的连接 代理可能不可用 测试运行非常非常长的时间 并且该消息每秒至少记录一次 但我发现 如何摆脱它 请继续阅读 如果配置 注释有不正确的地方 请告诉我 版本优先
  • EXC_BAD_ACCESS 使用 gmaps sdk 1.9.0,Xcode 6.4,在 8.3 设备上运行

    我有 2 个使用 google 地图 sdk 的项目 它们目前位于 Appstore 中 需要注意的事项 通过cocoapods安装的Gmaps sdk版本1 9 0 Xcode 版本 6 4 部署目标 7 1 设备 iPhone 4s 8
  • 将变量从中间件传递到模板

    我是 Django 初学者 到目前为止我学到了传递变量view to template 但现在我需要将变量传递到我的主布局 我可以在视图中的每个页面的定义中传递它 但它的重复太多了 于是我开始学习中间件 我创建了 middlewares p
  • VBA 打开多个工作簿、复制特定数据、删除重复行并将信息粘贴到新工作簿中

    我知道标题不太清楚 但我希望我能在这个描述中更好地解释它 我是 VBA 新手 我需要编写一些执行以下操作的代码 打开特定文件夹中的多个工作簿 并将信息从源工作表 仅一个活动工作表 中间的表复制到新工作簿中的目标 Sheet1 问题 1 表的
  • 有没有办法让 xsd.exe 生成具有“内部”范围的类?

    我有一个 DLL 其中包含一些 XSD 生成的类 不幸的是 XSD exe 将这些类公开 这会导致 缺少公开可见类型或成员 XYZ 的 XML 注释 警告 另外 我不想从我的 DLL 中公开这些类 有没有办法 除了手动编辑生成的 cs 之外
  • 如何通过T-SQL在SQL Server 2008中创建计划作业?

    我想创建一个作业 在一段时间过去后从数据库中删除记录 例如我在新闻表中有一个字段Time Stamp每个月都会有一个 SQL 查询像计划作业一样针对我的数据库运行 并删除时间戳为两个月前的新闻 一般来说 我想删除两个月前或更早的新闻 以免我
  • 克隆与实例化新类

    在这种情况下 克隆是好的做法吗 怎样才能做得更好呢 public ModelCollection startParsing return parseFeed new ModelSpecialEntry public ModelCollect
  • 数据库模式混乱

    当我设计一些类时 我遇到了轻微的术语混乱 在 Sql Server 2005 中 架构 指的是数据库对象的命名空间和组织系统 但对于一般的关系数据库来说 模式 意味着表 字段等的 DDL 设计 如果我的观点是正确的 那么它解释了当我尝试阅读
  • 哪个STL容器?

    我需要一个容器 不一定是 STL 容器 它可以让我轻松执行以下操作 在任意位置插入和移除元素 通过索引访问元素 以任意顺序迭代元素 I used 标准 列表 但它不会让我在任何位置插入 确实如此 但为此我必须迭代所有元素 然后在我想要的位置
  • 将日期从 MySQL 正确导入到 R 中

    我的问题几乎相同正如这个 https stackoverflow com questions 27597932 databse connection using dplyr with date field in databse 简而言之 我
  • 在 NULL 表示为 0 的平台上,编译器是否曾经生成过 NULL <= p 的意外代码

    在 C99 中 平等 似乎从来没有未定义过 它可以产生1如果您意外地将其应用到无效地址 例如 x 1 y可能是偶然的事实 它不会产生未定义的行为 许多 但不是全部 无效地址未定义为根据标准计算 使用 因此p x with p悬空指针 或者
  • CSS 中的“缩放”有什么作用?

    我发现一些 jQuery 插件在他们的 css 规则中使用了 zoom 描述符 我什至查看了 w3c 网站 发现它是用来放大的 但我该如何实际实现它呢 或者我必须定义一些视口 我如何定义这样的视口 或者我对整个事情都错了 是否可以像这样使用
  • Blowfish 在 Java/Scala 中加密并在 bash 中解密

    我正在尝试构建一个工具来解密在 scala 应用程序中加密的 bash 内容 但首先 我必须成功地用两种语言对相同的消息进行编码并使它们相等 给定密码 0123456789abcdef 十六进制 3031323334353637383961
  • 为什么具有单个组的数据帧 groupby 不返回数据帧?

    我怀疑这是我的问题的更简单形式here https stackoverflow com questions 18518077 why does pandas groupby cut give different form of output
  • std::variant 似乎不适用于 C++ 中的shared_ptr

    通过下面的代码 我得到 In static member function static std shared ptr
  • C++20 内存模型中释放序列定义的更改有何影响?

    考虑这个程序 Initially std atomic
  • Java中如何处理未知的protobuf字段?

    我有一个 Java 应用程序 它从另一台计算机读取一些 protobuf 数据 然后修改一些值并将其写回 用户很可能使用过时的 proto 文件读取数据 因此在这种情况下会有一些字段无法理解 我最终希望在写回所做的更改时保留未知的数据 但是
  • 是否可以反转包含循环的链表?

    我正在看一些面试问题 其中一个要求反转包含循环的链表 所以假设我有一个如下所示的链接列表 F lt E V A gt B gt C gt D 然后反转列表将创建以下内容 F gt E V A lt B lt C lt D 这里的问题是 C