基于链表的数据结构堆栈具有基本和顶部指针指向堆栈的成员。
结节点{ struct node * next; int val;};结构堆栈{ struct node * …
一个纯粹的 堆 只需要一个 的 最佳 强> 指针。也许您正在使用该数据结构 队列 ,最后添加,从头开始。
一个 链表 只需要一个 的 头 强> ,但为了追加到最后a 的 尾巴 强> 会有益的。
struct linkedlist { struct listnode* head; struct listnode* tail; int count; // Might be useful }
(我使用了传统的名字。)
有人可能会提到 双重链表 有:
struct node { struct node* previous; struct node* next; int val; };
这将允许头部和尾部的完全对称使用。
没有什么可以阻止您使用上面定义的结构对中的任何一对创建数据结构。然而,链接列表是你可以在前面或后面添加和删除元素而不遍历列表更像是一个 出队 一个双端队列。类似地,你可以从任何一端添加或获取元素的堆栈也趋向于出列。
我认为正在发生的是你在形式接口和底层数据结构之间感到困惑。因此,如果您使用API创建代码,该API允许从您可以遍历和插入/删除的项链接列表的任一端添加或删除元素,则可以使用它来呈现堆栈或链接列表或取决于取消您使用的API的哪些部分以及如何命名它们。