栈和队列复习——用两个栈实现一个队列

一、栈和队列的基本概念
1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征
2.队列(queue)是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删除只能在另一端进行。能够增加元素的队列一端称为队尾,可以删除元素的队列一端则称为队首。
二、用python实现栈和队列的功能
1.栈可以通过python的list来实现,其中append操作相当于栈的push操作,官方代码如下:

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

2.python用 collections.deque设计实现队列功能:

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")           # Terry arrives
>>> queue.append("Graham")          # Graham arrives
>>> queue.popleft()                 # The first to arrive now leaves
'Eric'
>>> queue.popleft()                 # The second to arrive now leaves
'John'
>>> queue                           # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])

三、用两个栈实现一个队列
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
主要思路:一个栈input用于输入,另一个栈output用于输出,一串输入经过一次进栈和一次出栈操作就可以达到先进先出,需要注意的是每次输入时需要判断output内是否还有元素,有的话需要重新放入input才可以进行append操作。

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.input=[]
        self.output=[]
    def push(self, node):
        # write code here
        if self.output==[]:
            self.input.append(node)
        else:
            while self.output:
                self.input.append(self.output.pop())
            self.input.append(node)
    def pop(self):
        # return xx
        if self.input==[] and self.output==[]:
            return None
        else:
            while self.input:
                self.output.append(self.input.pop())
            return self.output.pop()

猜你喜欢

转载自blog.csdn.net/Boom_1/article/details/86537934
今日推荐