Data structures 如何使用堆栈实现链表
我知道使用链表实现堆栈是可能的。是否可以使用堆栈实现链表?Data structures 如何使用堆栈实现链表,data-structures,Data Structures,我知道使用链表实现堆栈是可能的。是否可以使用堆栈实现链表? 如果可能的话,怎么办?我没有从任何地方得到任何推荐信 如果是单链表,则通过在头部添加来实现push,通过从头部删除来实现pop。您不想使用尾部,因为在执行pop时,需要从头到尾不断迭代以找到新的顶部 这里有一个例子: 如果它是一个双链接列表,选择一个端点并通过在该端点添加和删除来实现push和pop。任何一端都将与另一端一样高效,因为您有双向的指针,因此您可以在弹出后轻松找到新的顶部 为了回答第二个问题,我认为不能使用堆栈实现链表。堆栈
如果可能的话,怎么办?我没有从任何地方得到任何推荐信 如果是单链表,则通过在头部添加来实现
push
,通过从头部删除来实现pop
。您不想使用尾部,因为在执行pop
时,需要从头到尾不断迭代以找到新的顶部
这里有一个例子:
如果它是一个双链接列表,选择一个端点并通过在该端点添加和删除来实现push
和pop
。任何一端都将与另一端一样高效,因为您有双向的指针,因此您可以在弹出后轻松找到新的顶部
为了回答第二个问题,我认为不能使用堆栈实现链表。堆栈是比列表更简单的ADT。您可以使用两个堆栈模拟链表。一个堆栈是“列表”,另一个用于临时存储
要在头部添加项目,只需将项目推到堆栈上。要从头部移除,请从堆栈中弹出
要插入中间的某个位置,请从“列表”堆栈中弹出项目,并将它们推到临时堆栈上,直到到达插入点。将新项目推到“列表”堆栈上,然后从临时堆栈中弹出并推回到“列表”堆栈上。删除任意节点也类似
顺便说一句,这不是非常有效,但事实上它会起作用。请提供所需的更多信息/代码库?是的,但是使用Perl、Python、C++、Swift。目标C.C?