我理解如何使用循环S1和S2(伪代码)
来完成此操作Loop (NOT emptyStack(S2))
pop(S2, dataptr)
push (temp, dataptr)
end loop
Loop (NOT emptyStack(temp))
pop (temp dataptr)
push(S1, dataptr)
end loop
如果没有循环(大O常数),你会怎么做? 使用队列很容易,因为你所要做的就是将q1的后指针移到q2的前面并链接它们。
像伪代码一样的C会很棒!非常感谢你。答案 0 :(得分:2)
在内部将堆栈实现为链接列表,并挂起指向堆栈顶部和底部元素的指针。然后连接堆栈的操作与将两个链接列表拼接在一起的操作相同,即O(1)。