连接两个堆栈(一个堆栈在另一个堆栈之上)

时间:2014-02-12 06:50:32

标签: c stack

我理解如何使用循环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会很棒!非常感谢你。

1 个答案:

答案 0 :(得分:2)

在内部将堆栈实现为链接列表,并挂起指向堆栈顶部和底部元素的指针。然后连接堆栈的操作与将两个链接列表拼接在一起的操作相同,即O(1)。