栈和队列---用一个栈实现另一个栈的排序

来源:互联网 发布:金钥匙是什么软件 编辑:程序博客网 时间:2024/04/26 15:28

【题目】

  一个栈中元素的类型是整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?

【基本思路】

  不断将栈顶元素cur弹出,如果新栈为空、或者新栈栈顶元素大于cur,直接将cur压入新栈中;否则,将新栈中所有的元素压回原来的栈中,再将cur压入新栈中.继续弹出原来栈的栈顶元素,重复上述操作即可。

【代码实现】

#python3.5def sortByStack(stack):    if len(stack) < 2:        return stack    stack1 = []    while stack:        cur = stack.pop()        if len(stack1) == 0 or stack1[-1] >= cur:            stack1.append(cur)        else:            while stack1:                stack.append(stack1.pop())            stack1.append(cur)    while stack1:        stack.append(stack1.pop())    return stack
阅读全文
2 0