Erlang 中可以定义循环列表吗?

2024-01-04

erlang中可以定义循环列表吗?http://en.wikipedia.org/wiki/Linked_list http://en.wikipedia.org/wiki/Linked_list

第一个问题是 erlang 中的循环列表到底意味着什么? 它是否有两个元素,一个元素是它自己,它旁边的地址指向下一个元素,存储在列表中?

如果是这样,我可以说有可能在 erlang 中定义循环列表。 但我需要澄清天气是我认为的 erlang 中的循环列表吗?


没有内置的列表机制可以做到这一点。但是,您可以使用包含您访问过或未访问过的元素的元组来构建一个。

基本结构是一个包含两个列表的元组:{Old, New}。当你第一次从一个空列表开始时,它看起来像{[],[]}。当您填写列表时,您将其填写在New list:

new() -> {[], []}.

insert(X, {Old, New}) -> {Old, [X|New]}.

peek({_Old, [H|_]}) -> X.

要在列表中移动,您首先要做的是在New列表,并将值放入旧列表中:

next({Old, [H|New]}) -> {[H|Old], New}.

这很好,就像我们只是丢弃旧元素一样。当我们到达列表末尾时会发生什么?我们需要修复这个函数(还有 peek 函数):

peek({Old, []}) -> hd(lists:reverse(Old));
peek({_Old, [H|_]}) -> X.

next({Old, []}) -> 
    {[], lists:reverse(Old)}}.
next({Old, [H|New]}) -> 
    {[H|Old], New}}.

如果列表中没有任何内容,它就会崩溃。如果您想通过特殊大小写,也可以返回“未定义”:

next({[], []}) ->
    undefined;
next({Old, []}) -> 
    {[], lists:reverse(Old)}.
next({Old, [H|New]}) -> 
    {[H|Old], New}.

然后,您可以使用“下一步”、“查看”功能以及可能的“删除”功能(见下文)来执行正常操作。我们还可以添加一个“prev”函数以允许向后浏览:

prev({[], []}) ->
    undefined;
prev({[], New}) -> 
    {lists:reverse(New), Old}.
prev({[H|Old], New}) -> 
    {Old, [H|New]}.

delete({Old, []}) -> {[], tl(lists:reverse(Old))};
delete({Old,[H|New]}) -> {Old, New};

这应该涵盖了大部分内容。

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

Erlang 中可以定义循环列表吗? 的相关文章

  • 如何将Scheme中的函数应用于另一个函数返回的参数列表?

    假设有两个函数 f 和 v 进一步假设 v 返回长度为 n 的列表 并且 f 需要恰好 n 个参数 我正在Scheme中寻找正确的语法 以将f应用于v返回的列表 如果我使用语法 f v v arguments 然后我收到一个关于 f 需要
  • 在 Haskell 中合并两个列表

    无法弄清楚如何合并两个列表通过以下方式在哈斯克尔 INPUT 1 2 3 4 5 11 12 13 14 OUTPUT 1 11 2 12 3 13 4 14 5 我想提出一个更懒的合并版本 merge ys ys merge x xs y
  • PYTHON 从嵌套列表中删除元素

    我有一个像这样的数组 dataSet 387230 296163 323434 311472 323412 166282 410119 我想删除元素 311472 但不知道如何删除 我努力了 for set in dataSet for i
  • python中有没有一种方法可以将存储在列表中的正则表达式模式列表应用到单个字符串?

    我有一个正则表达式模式列表 存储在列表类型中 我想将其应用于字符串 有谁知道一个好方法 将列表中的每个正则表达式模式应用于字符串 和 如果匹配 则调用与列表中该模式关联的不同函数 如果可能的话我想用 python 来做这件事 提前致谢 im
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 查找 C# 列表中重复项的数量

    我在 C 中使用列表 代码如下 测试用例 cs public class TestCase private string scenarioID private string error public string ScenarioID ge
  • 如何设置行高 Sencha Touch List

    如何设置 Sencha Touch List 对象中的行高 我使用 HTML 来格式化行 多行行会变得更高 但如何设置行高 谢谢 格里 要编辑列表元素的默认高度 有两种方法 使用 SASS 创建您自己的 Sencha 主题 官方 Sench
  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • 如何使用foldr为列表创建显示实例?

    我想为我的数据类型 我的列表 编写自己的显示实例 到目前为止 我的方法是有效的 但我总是在末尾有一个逗号 我已经尝试用最后一个元素启动折叠并将其从列表中删除 但它很麻烦而且不起作用 有没有更简单的方法来获得正确的解决方案 实际 1 2 3
  • 如何将列表转换为地图?

    最近我和一位同事讨论了转换的最佳方式是什么List to Map在 Java 中 这样做是否有任何具体的好处 我想知道最佳的转换方法 如果有人可以指导我 我将非常感激 这是个好方法吗 List
  • 哪个更快:清除集合或实例化新集合

    我的代码中有一些通用列表 其中有数十或数百个元素 有时我需要用其他对象重新填充此列表 所以问题是 调用什么会更快Clear 方法或创建一个new List
  • 将元组列表转换为字符串 Python

    例如 我用 python 编写了一个返回列表的函数 1 1 2 2 3 3 但我希望输出为字符串 这样我就可以用另一个字符替换逗号 这样输出就是 1 1 2 2 3 3 有什么简单的方法可以解决这个问题吗 感谢您提前提供任何提示 这看起来像
  • 如何在Python中一次比较二维数组的2列与另一个数组的列

    我有两个字符串数组 每个数组有三列 我想比较两个二维数组的前两列 有 3 列和 4000 行 如果它们匹配 那么我需要那些匹配的值 但是我的代码不起作用 这是一个示例 array1 1stcolumn 2ndColumn 3rdColumn
  • Cowboy 中的 http 处理程序和 websocket 处理程序之间的通信

    我想在 Cowboy 中创建一个 websocket 应用程序 它从另一个 Cowboy 处理程序获取数据 假设我想结合牛仔的 Echo get 示例 https github com ninenines cowboy tree maste
  • 错误列表索引必须是整数,而不是列表。获取一个数组的值,使用它们作为索引来删除另一个数组中的值

    seen dups collections defaultdict list for i item in enumerate prules for j orig in enumerate seen if item orig dups j a
  • 创建动态对象

    如何动态创建对象 string columnNames EmpName EmpID PhoneNo List
  • 如何使用包含 \n 的 .txt 创建一维列表?

    我想读取一个文本文件并将文件的每个元素放入一个列表中 而不是为文件中的每一行都有一个单独的列表 例如 如果文件是 你好我的名字 Is Joe 我希望列表是 你好 我的名字是 Joe 而不是 你好 我的名字 是乔 这是我到目前为止所拥有的 d
  • 存储整数列表的最有效方法

    我最近一直在做一个项目 其中一个目标是使用尽可能少的内存来使用 Python 3 存储一系列文件 除了一个整数列表之外 几乎所有文件都占用很少的空间 大致333 000整数长且整数可达约8000在尺寸方面 我目前正在使用pickle存储列表
  • 发布到列表 MVC3

    我试图让我的视图将列表发布回操作 但它始终为空 所以我的模型有一个 WeightEntry 对象列表 运动模型 public class Exercise public List

随机推荐

  • 原始查询必须包含主键

    我有一个原始的 SQL 语句views py Message objects raw SELECT s1 ID s1 CHARACTER ID MAX s1 MESSAGE MESSAGE MAX s1 c occurrences FROM
  • 对于这种 PHP 按值调用行为有合理的解释吗?还是 PHP 的 bug?

    PHP 5 5 12 考虑一下
  • 多态模型的骨干集合

    我有一系列动物 App Collections Animals extends Backbone Collection model App Animal url animals returns json 这些动物类别 App Models
  • BinaryWriter 字节序问题

    我正在使用 BinaryWriter 类将二进制文件写入磁盘 当我调用 Write 方法并传递无符号短值时 它会以小端格式写入 例如 bw Write 0xA000 将二进制文件中的值写入为 0x00 0xA0 有没有办法让 BInaryW
  • 如何列出特定 S3 存储桶中的所有文件?

    我在我的项目中使用 AWS S3 存储桶 在其中使用 API 上传图像和列出图像 效果非常好 现在我想列出特定 S3 存储桶 文件夹的所有文件 特定存储桶的对象列表 这是我的 S3 存储桶的屏幕截图 我尝试给存储桶命名 例如 wevieu
  • 以编程方式指定 Django 模型属性

    我想以编程方式向 Django 模型添加属性 在类创建时 定义模型类时 此后模型在运行时不会改变 例如 假设我想定义一个Car模型类并想添加一个price给定货币列表的每种货币的属性 数据库列 这个货币列表应该被认为是一个不会改变运行时间的
  • 无法将 IMAPInputStream 转换为 Multipart

    在Java项目中 我可以从gmail服务器接收邮件 但我想收到身体的包裹部分 在这个代码示例中我的最后一个message messages length 1 是多部分 混合的 调试是通过if块 但它落入 catch 块并给了我以下消息 线程
  • Gradle 中的相对项目依赖关系?

    指定 Gradle 项目依赖项时 我可以避免使用完整的绝对项目名称并使用相对项目名称吗 即在我的示例中 我不想在引用 domain a 时显式指定 app a Directory structure app a domain a build
  • 基于 unquote-splicing 排除多列(!!!)

    试图排除 multiple调用中的列tidyr gather 它们通过a作为我的函数的输入字符向量参数 输出shiny selectInput 而不是通过 in a 程序化的 way 我该如何使用整洁的评估功能来做到这一点 由于我通过单个函
  • gcc:设备上没有剩余空间?

    我试图在 Ubuntu 10 中使用简单的 gcc 命令编写一些 C 代码 但由于某种原因 我不断收到错误 Cannot create temporary file in tmp No space left on device 但问题是 我
  • 将 json 文本作为命令行参数传递

    我正在尝试将以下 JSON 文本传递到我的 python 代码中 platform android version 6 0 1 我的代码如下 import sys import json data json loads sys argv 1
  • 为什么绝对位置元素会根据其父元素的右边界换行?

    为什么绝对定位元素依赖于其父元素进行文本换行 没有position absolute从流中删除一个元素 我正在寻求消除这个界限 这就像一个暗示max width我不想要的 我希望另一个开发人员能够设置这个max width 而不用担心这个任
  • 如何在堆栈和堆对象之间进行转换

    Example Class obj1 Class obj2 void doThis Class obj void create Class obj1 new Class Class obj2 doThis obj1 doThis obj2
  • 垃圾收集如何决定变量的生成

    我知道 GC 有 3 0 1 2 代 但我想知道 GC 如何决定变量的代 我认为所有变量都进入第 0 代 一段时间后移动到第 1 代和第 2 代 GC 决定代的大小是否重要 方案1 private static void Main stri
  • Ruby On Rails 4.2 生命周期结束

    Rails 4 2 的生命周期终止日期已经确定了吗 我正在尝试确定在不再支持该产品之前将我的产品升级到 Rails 5 的最后期限 因此如果我继续使用该版本将会存在安全风险 谢谢 看来有关 Rails 4 2 EOL 的答案已经在http
  • java 中的mapreduce - gzip 输入文件

    我在用着java 我正在尝试写一个mapreduce将接收一个包含多个的文件夹作为输入gz files 我一直在寻找 但我找到的所有教程都解释了如何处理简单的文本文件 但没有找到任何可以解决我的问题的内容 我在我的工作场所打听过 但只得到了
  • 该主机的指纹未通过 PuTTY 注册?

    我是使用 Git cmd 和 UI 客户端 的新手 我安装了 Git 扩展 设置了所有要求 当我尝试连接到 BitBucket 上的存储库 私人帐户 我使用计算机上自己的 ppk 时 我收到以下消息 当我单击 Yes 时 我会看到一个 Gi
  • 在 html div 中渲染 ExtJS 4+ MVC 应用程序 - 操作方法?

    到目前为止我找到的所有示例都解释了如何在 视口 内渲染 ExtJS 4 2 MVC 应用程序 换句话说 这意味着整个浏览器屏幕 并占据整个 HTML 主体 我想在名为 DIV 的现有 HTML 页面中呈现应用程序 以便我可以围绕应用程序进行
  • 如何使用 Razor 在 MVC3 中混合 HTML 和 C# 代码?

    我正在尝试显示应出于样式目的切换类的项目列表 这个想法是创建一个 foreach 循环 它将循环遍历所有myObj在模型中 我尝试了以下代码 但不起作用 因为我做错了 int i 2 foreach var myObj in Model i
  • Erlang 中可以定义循环列表吗?

    erlang中可以定义循环列表吗 http en wikipedia org wiki Linked list http en wikipedia org wiki Linked list 第一个问题是 erlang 中的循环列表到底意味着