Python-数据结构-栈与队列-两个栈实现一个队列

1.两个栈实现一个队列

栈是先进后出,队列是先进先出,那么两个队列正好可以实现先进先出的功能。

a栈出栈后的元素入栈b栈,b栈出栈的元素顺序就是列表的出栈顺序

2.代码实现

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:cfl
@file:两个栈实现一个队列.py
@time:2021/12/10
@software:PyCharm
"""
from stack import Stack

class StackQue:
    def __init__(self):
        self.a=Stack()
        self.b=Stack()
    def appendtail(self,v):
        if self.b.is_empty()==False:
            lenb=self.b.length
            for i in range(lenb):
                self.a.push(self.b.pop())
        self.a.push(v)
    def deletehead(self):
        if self.b.is_empty():
            lena=self.a.length
            for i in range(lena):
                self.b.push(self.a.pop())
        return self.b.pop()

def main():
    stackque=StackQue()

    for i in range(4):
        stackque.appendtail(i)

    for i in range(3):
        stackque.deletehead()

    for i in range(7,10):
        stackque.appendtail(i)

    for i in range(7):
        print(stackque.deletehead())


if __name__ == '__main__':
    main()

这里我们用到了一个from stack import Stack,功能是实现一个栈,是我们之前写的类,可以参考Python-数据结构-栈

3.执行结果

Python-数据结构-栈与队列-两个栈实现一个队列_第1张图片

你可能感兴趣的:(#,栈与队列,数据结构,python,栈,队列)