【问题标题】:What exactly is dynamic linked list? [closed]究竟什么是动态链表? [关闭]
【发布时间】:2019-08-28 15:59:14
【问题描述】:

我必须在 C 中创建一个动态链表,但我不确定我到底要做什么。动态是什么意思?它是一个列表,你知道在哪里找到哪个节点(每个节点的 *p 数组?但是这样,它仍然被认为是链表吗?)或者像每个节点都有 *p 到下一个和前一个节点的东西?或者如果用户说他想知道节点的确切位置,有没有办法精确到那个位置?

【问题讨论】:

  • 欢迎来到 SO。请阅读meta.stackoverflow.com/questions/334822/… 并编辑您的问题
  • 我认为链表在定义上是“动态的”。它是一种数据结构,您可以在其中插入和删除节点,仅受可用内存量的限制。这意味着它使用malloc 为新节点获取内存,而malloc 意味着“动态”。

标签: c linked-list structure theory


【解决方案1】:

在 C 中,dynamic 这个词通常意味着 从堆中分配,而不是 static,后者指的是全局对象定义和/或在编译时初始化。

我个人从未使用过动态链表这个词。在运行时从堆中分配列表项似乎很自然(因此动态分配)。然而,可以定义在编译时链接为列表的静态对象。在某些情况下,我可能会使用这种方法。

列表中可以使用第三种类型的对象:具有自动存储的节点,即定义为局部变量。这是可能的,但非常很棘手,因为这些对象在函数退出时超出范围,因此如果列表仍然链接到它们,则列表将变为无效。

作为结论,您需要处理的列表类型只是普通的链表,其节点从头部分配为malloccalloc,并在丢弃时使用free 释放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2014-03-11
    • 2012-04-30
    • 2015-01-10
    相关资源
    最近更新 更多