刷题笔记——栈和队列(复习)

1.栈的定义
(1)栈:栈实际上是一种线性表,它只允许在固定的一段进行插入或者删除元素,在进行数据插入或者删除的一段称之为栈顶剩下的一端称之为栈底。其遵循的原则是后进先出
(2)栈的核心操作:三大核心操作,入栈,出栈,取栈顶元素
刷题笔记——栈和队列(复习)_第1张图片

2.队列的定义
(1)队列:首先队列也是一种特殊的线性表,它允许在一端进行插入数据为队首,在另一端进行删除数据的为队尾。其遵循的原则是先进先出
(2)队列的核心操作:三大核心操作分别是入队列,出队列,取队首元素。
刷题笔记——栈和队列(复习)_第2张图片

Leetcode 232 用栈实现队列

class MyQueue(object):

    def __init__(self):
        self.stack1 = []
        self.stack2 = []

    def push(self, x):
        self.stack1.append(x)

    def pop(self):
        if not self.stack2:
            while self.stack1:
                self.stack2.append(self.stack1.pop())        
        return self.stack2.pop()

    def peek(self):
        if not self.stack2:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
        temp = self.stack2.pop()
        self.stack2.append(temp)
        return temp

    def empty(self):
        return not self.stack1 and not self.stack2

你可能感兴趣的:(算法,链表,b树,leetcode,决策树)