如何使用Stack实现链表

时间:2016-03-22 09:28:06

标签: data-structures

我知道使用链表实现堆栈是可能的。是否可以使用堆栈实现链接列表? 如果有可能,那怎么样?我没有从任何地方得到任何参考。

2 个答案:

答案 0 :(得分:1)

如果它是单个链接列表,请通过添加头部来实现push,并通过从头部删除来pop。您不想使用尾巴,因为当您执行pop时,您需要从头部到尾部进行迭代以找到新的顶部。

这里有一个例子:Stack

如果它是双重链接列表,请选择结束并通过在此端添加和删除来实施pushpop。任何一方都会像另一方那样高效,因为你有双向指针,所以你可以在pop之后轻松找到新的顶部。

要回答您的第二个问题,我不认为您可以使用堆栈实现链接列表。堆栈是一种比列表更简单的ADT。

答案 1 :(得分:1)

您可以使用两个堆栈来模拟链接列表。一个堆栈是"列表,"另一个用于临时存储。

要在头部添加项目,只需将项目推入堆栈即可。要从头部移除,请从堆栈中弹出。

要插入某个地方的中间,请从"列表"中弹出项目。堆叠并将它们推到临时堆栈上,直到到达插入点。将新项目推送到"列表"堆栈,然后从临时堆栈弹出并推回到"列表"堆。删除任意节点是类似的。

顺便说一下,这并不是非常有效,但它实际上会有效。