Advertisement

栈与队列相互转换及基于Python的复杂度分析

阅读量:

###两个栈实现一个队列

入队:元素进栈A

dequeuing过程如下:首先检查是否为非空状态;若是空状态,则依次从源队列A中取出所有元素并压送到目标队列B;随后取出队列B顶端的元素并弹出;若目标队列B尚有存留空间,则直接从当前存在的最顶端位置弹出一个数据项作为结果输出

分析:这种方法在入队操作的时间复杂度上达到了常数级别(O(1)),但出队操作的时间复杂度上升至线性级别(O(n))。相比之下,在Python中使用列表模拟一个先进先出(FIFO)序列时,默认情况下以列表尾作为序列头部,则插入操作的时间复杂度仍维持常数级别(通过使用列表插入函数 insert),而删除操作的时间复杂度维持线性级别(通过使用列表 pop 方法)。

复制代码
    class Queue:
    def __init__(self):
        self.stockA=[]
        self.stockB=[]
    def push(self, node):
        self.stockA.append(node)
    def pop(self):
        if self.stockA==[]:
            return None
        if self.stockB==[]:
            for i in range(len

全部评论 (0)

还没有任何评论哟~