Python用两个栈实现队列

思想:用A栈存储入队的数据,出队时先把A栈的数据全部pop进B栈,再对B栈进行pop操作。

Python代码如下:

# -*- coding:utf-8 -*-


class Stack(object):
    # 初始化栈为空列表
    def __init__(self):
        self.stack = []


    # 判断栈是否为空,返回布尔值
    def is_empty(self):
        return self.stack == []


    # 返回栈顶元素
    def peek(self):
        return self.stack[len(self.stack) - 1]


    # 返回栈的大小
    def size(self):
        return len(self.stack)


    # 入栈
    def push(self, item):
        self.stack.append(item)


    # 出栈
    def pop(self):
        return self.stack.pop()




class Solution:
    stack_first = Stack()
    stack_second = Stack()


    def push(self, node):
        self.stack_first.push(node)


    def pop(self):
        if self.stack_second.is_empty() == False:
            return self.stack_second.pop()
        else:
            while self.stack_first.is_empty() == False:
                self.stack_second.push(self.stack_first.pop())
        return self.stack_second.pop()

阅读更多
个人分类: Python
上一篇LR与SVM比较
下一篇在分类中处理训练集中类别不平衡问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭