【问题标题】:Practical example of data-structures in computer study? [closed]计算机学习中数据结构的实际例子? [关闭]
【发布时间】:2011-06-09 09:05:05
【问题描述】:

我的朋友在接受 IT 公司的面试时,他们问他给出每个数据结构的实际例子,如何在计算机学习中使用这种数据结构??

数据结构

  1. 堆栈
  2. 队列,循环队列
  3. 链表、双向链表、循环链表
  4. 树,二叉搜索树
  5. 图表
  6. 地图 以及其他喜欢搜索和排序的人

(例如在操作系统中 维护进程队列【使用队列数据结构】这样的 所有其他人)

与软件相关的示例 实施与计算机 科学、操作系统等

希望得到积极的回应

【问题讨论】:

  • 那么,当您说“计算机学习”时,您实际上是指理论计算机sci,还是软件实现?您的示例表明后者。
  • 这是一道面试题?
  • @djacobson 问题已编辑..
  • @BoltClock 是的,为什么它不适合作为面试问题。你认为

标签: data-structures stack queue linked-list


【解决方案1】:

队列通常用于将一组数据保存在有组织的结构中,以便在需要时立即轻松访问,因为它是 FIFO(先进先出)。然而;当该队列FULL向该队列填充信息时,其余信息将丢失。为了解决这个问题,使用了循环队列,它会覆盖其他元素,以便最近的数据不会丢失。

您提到的一个例子是计算机的资源队列。因为计算机没有无限资源,所以必须使用队列才能将资源分配给需要它的人。例如,一个进程将请求一些资源,然后将其放入队列并被赋予优先级,然后操作系统将根据这些信息决定它需要多少资源以及将给予多少时间。为了允许多个进程使用它,任何需要处理的进程都会在该队列中放入一个请求。

链表有许多应用,实际上不可能将其简化为一个。例如,您可以通过链表中元素的节点队列来链接帐户(对象)。在链表中,一个节点有一个前一个节点和一个下一个节点。它有效地将所有元素链接在一起,以便可以遍历它们。取决于链表的样式,它允许前向遍历、后向遍历或双向遍历。需要注意的一点是,链接列表的大小可以是动态的,因为添加新注释所需要做的只是将其附加到列表的末尾。然而;就性能而言,它的速度将是 O(N),这意味着性能在很大程度上取决于列表的大小。

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    一些例子:

    1. 堆栈 - 撤消函数使用它来 弹出最近的动作 堆栈,然后是第二个最近的,等等。
    2. 队列 - 进程调度正常 使用队列(如何处理或 线程在之后被访问 最初的工作各不相同)
    3. 树 - 目录遍历
    4. 二分查找 树 - 快速搜索给定的 元素
    5. Graph - 存储数据,以便您可以将其视为绘制数据的数学“平面”。它可以有效地表示(可能)数据之间非常复杂的关系,因为(如果您查看链接中的图像)多个“链接”可以存在于两个以上的数据之间,而不是链接列表,您只能在您的左侧和右侧都有一个链接。
    6. 哈希映射 - 搜索某些内存块(即,当使用许多指针时) 当您的计算机上有一个地址簿时,就会发生哈希。它可能使用哈希映射,这样当您输入 John Smith 时,他的电话号码和其他信息都可用。这是因为当输入“John Smith”时,有一个哈希函数指向内存中的某个位置。每次你想访问一些简单的信息时,输入内存地址会很头疼。
    7. 链表 - 单链表提供元素之间的单向移动,双向链表提供元素之间的来回移动,循环链表提供相似对象的循环导航(流程就是一个示例)能够在元素之间导航,因为每个元素都链接到下一个元素和它之前的元素(对于循环。非循环链表有开始和结束)。想象一下您的网络浏览器……您单击“返回”转到上一页,然后单击“前进”转到下一个页面。你可以把它想象成一个线性链表。一张照片幻灯片放映到下一张或上一张照片,然后最终从头开始,可以被认为是一个循环链表。 (它们不一定是这样实现的,但这是一种可视化的好方法)

    根据 OP 的要求进行编辑,以获取有关最后结构的更多信息。

    【讨论】:

    • stack,queue,tree 我很清楚这个数据结构,正如你所说的,如果你能帮助我很多特别的链表,我需要更多关于剩余的解释??
    • 为您的观赏乐趣添加了更多信息
    • 我认为您没有正确解释哈希图。如果他已经拥有一个结构的内存地址,那么访问它就不会令人头疼——这是一个 O(1) 操作。哈希映射允许您有效地查找键值对,其中一种用途是数据库。例如,如果您将键值对存储在列表中,如果无法对键进行排序,则搜索将是 O(n) 操作。使用哈希映射,您可以保证平均对键进行 O(1) 查找。
    【解决方案3】:
    1. 堆栈 - 任何递归调用
    2. 队列,循环队列——所有的先进先出算法都使用这个
    3. 链表、双向链表、循环链表-所有RDBMS
    4. 树,二叉搜索树 - 需要搜索的地方。内存存储在B树中
    5. 图表 - 谷歌地图

    【讨论】:

    • 只有递归函数调用使用栈?
    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 2019-06-13
    • 2015-11-28
    • 2020-08-23
    • 2013-01-29
    • 2016-01-31
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多