Tag: 数据结构

什么是拉链数据结构,我应该使用它?

问题很简单:我无法理解Zipper数据结构。 我的问题是关于它与树的使用。 我想了解如何使用拉链更改树节点。 而如何不复制整个树(或大部分)。 请澄清,如果我错了拉链。 也许它不能帮助树更新? 或者,也许,有可能更新树,我只是不能看到的方式?

T9字典背后的数据结构

T9字典是如何工作的? 它背后的数据结构是什么? 如果我们input“4663”,当我们按下button时,我们会变得“好”,我们会“走出去”,然后“回家”等等。 编辑:如果用户键入46,那么它应该显示“去”,当按下箭头应显示“走了”等…

这是哪个数据结构?

数据结构的名称(如果存在的话)是什么? 你可以插入一个元素,并给你一个键。 您可以通过其键获取元素。

数据结构…所以我怎么理解他们呢?

所以我是一名计算机科学专业的学生,​​在大约一个星期左右的时间里,我将会重新拿一个数据结构课程,用C ++来应用这个理论。 是的,我确实说过“重新获得”。 去年秋天我参加了这个课程,我觉得还有更多需要学习的东西。 作为一名学生,我觉得我必须了解基础知识,因为通过已经了解基本概念,不需要每次重新学习,就能更容易地理解未来课程中的新概念。 第一次,我没有使用C ++的经验,课程期望我们在第一周结束时进行编码。 我挣扎了几个第一次编程作业(MP)。 不用说,我已经习惯了,学期余下的时间也没有什么问题。 但是,更困难的数据结构出现,理论(大O)成为困难的一部分。 总而言之,这是一个很棒的经历,但是我觉得我的问题是我没有养成良好的学习习惯。 我做了议员,出席演讲,但似乎我的心不在我身边。 我想第二次改变这个,因为回头看课程,我确实玩得很开心,而且我很喜欢这些材料。 但是当我需要花时间思考如何有效地使用数据结构时,我发现自己花费了太多时间思考/设置数据结构。 学习理论是困难的(主要是因为它不那么令人兴奋),所以我应该如何应用自己来真正理解数据结构覆盖的类? 我一直是一个视觉学习者,一个互动的学习者…我不想花时间做我的议员。 相反,我想花时间去真正地学习/理解概念,然后直接运用知识。 我正在寻找任何build议…也许对过去学习这些概念的学习习惯的build议…或好的笔记技巧的build议…任何你想分享的东西:) …最重要的是,如何准备在学期开始之前。 即使select了答案,也请随时提供反馈意见。 我正在寻找你的build议…这就是为什么我张贴:)谢谢! 注 :本课程涵盖的数据结构和主题:列表,堆栈,队列,树(不同种类),哈希表,graphics,search/sorting/遍历技术。 更新 :这里是从目前的答案编译的链接和引用的列表。 Robert Sedgewick在C ++中的algorithm Cormenalgorithm介绍 NISTalgorithm和数据结构字典 sortingalgorithm 树遍历 图遍历 http://www.codeproject.com/KB/cpp/linked_list.aspx http://www.codeproject.com/KB/architecture/treedata_class.aspx 更新2 :这里是我发现一些更多的来源列表: http://people.ksp.sk/~kuko/bak/big/ http://webdiis.unizar.es/asignaturas/EDA/AVLTree/avltree.html http://www.dgp.toronto.edu/people/JamesStewart/270/9798s/Laffra/DijkstraApplet.html http://www.cs.duke.edu/csed/jawaa2/examples/BFS.html

什么是“和 – 产品”数据结构?

William Cook's Fusings最近的博客文章提到: 关键的一点是,Ensō中的结构被整体看作是graphics,而不是个体价值或传统的和 – 产品数据结构。 传统的总和和产品数据结构他指的是什么?

“完整的二叉树”,“严格的二叉树”,“全二叉树”之间的区别?

我对下面的树的术语感到困惑,我一直在研究这棵树,而我无法区分这些树: a)完整的二叉树 b)严格的二叉树 c)完整的二叉树 请帮我区分这些树木。 数据结构中何时何地使用这些树?

先进的数据结构在实践中

在编程的10年中,我可以统计一下我使用的数据结构的数量:数组,链表(我正在堆栈和排队)和字典。 考虑到我写的几乎所有的应用程序都落在了data-over-form / CRUD类别上,这并不奇怪。 我从来不需要使用红黑树,跳过列表,双端队列,循环链表,优先级队列,堆,图,或过去50年来研究的几十种奇特数据结构中的任何一种。 我觉得我错过了。 这是一个开放式的问题,但在实践中这些“异国情调”的数据结构在哪里呢? 有没有人有任何使用这些数据结构解决特定问题的实际经验?

在C ++中创build稀疏数组的最佳方式是什么?

我正在研究一个需要处理巨大matrix的项目,特别是用于copula计算的金字塔加法。 简而言之,我需要在matrix(multidimensional array)中的零海中追踪相对较less的值(通常值为1,在极less数情况下超过1)。 稀疏数组允许用户存储less量值,并假定所有未定义的logging为预设值。 由于在物理上不可能将所有值存储在内存中,因此我只需要存储less量的非零元素。 这可能是数百万条目。 速度是一个重要的优先事项,我也想在运行时dynamicselect类中的variables数量。 我目前正在使用二叉search树(b-tree)来存储条目的系统上工作。 有谁知道更好的系统?

为什么在链表中find循环的时候为什么不用3,4,5?

我已经看了一个关于在链表中find循环的algorithm的问题 。 我已经阅读了弗洛伊德的循环发现algorithm解决scheme,在很多地方提到我们必须采取两个指针。 一个指针(慢/龟)增加一个,其他指针(更快/更多)增加2.当它们相等时,我们find循环,如果更快的指针变为空,则链表中没有循环。 现在我的问题是为什么我们增加了更快的指针2.为什么不是别的? 增加2是必要的,或者我们可以通过增加X来得到结果。 如果我们用2递增更快的指针,或者可能出现需要增加3或5或x的情况,是否有必要find循环。

文本编辑原理

由于我总是对现有的编辑不满意,我一直想开始的一个项目就是我自己的文本编辑器。 不过,做文本编辑是很重要的事情。 除了分析现有文本编辑器的源代码之外,有没有关于这个主题的任何书籍或其他资源(如学术工作)? 我特别感兴趣的东西,教如何处理内存和如何pipe理文本插入(如果你有一个100 MB的文件,并希望在X位置添加一个字符,你不能只是巨大的文本块memmove … )。