我知道使用链表实现堆栈是可能的。是否可以使用堆栈实现链接列表? 如果有可能,那怎么样?我没有从任何地方得到任何参考。
答案 0 :(得分:1)
如果它是单个链接列表,请通过添加头部来实现push
,并通过从头部删除来pop
。您不想使用尾巴,因为当您执行pop
时,您需要从头部到尾部进行迭代以找到新的顶部。
这里有一个例子:Stack
如果它是双重链接列表,请选择结束并通过在此端添加和删除来实施push
和pop
。任何一方都会像另一方那样高效,因为你有双向指针,所以你可以在pop
之后轻松找到新的顶部。
要回答您的第二个问题,我不认为您可以使用堆栈实现链接列表。堆栈是一种比列表更简单的ADT。
答案 1 :(得分:1)
您可以使用两个堆栈来模拟链接列表。一个堆栈是"列表,"另一个用于临时存储。
要在头部添加项目,只需将项目推入堆栈即可。要从头部移除,请从堆栈中弹出。
要插入某个地方的中间,请从"列表"中弹出项目。堆叠并将它们推到临时堆栈上,直到到达插入点。将新项目推送到"列表"堆栈,然后从临时堆栈弹出并推回到"列表"堆。删除任意节点是类似的。
顺便说一下,这并不是非常有效,但它实际上会有效。