算法6:用两个栈实现队列模拟

#定义将数据输入队列中的操作
#利用一个栈来存储队列中的值
#stack1作为数据输入存储的栈
def PushDataToStack(element):
    stack1.append(element)


#定义将数据从队列中输出的操作
#利用第二个栈来“反转”第一个栈中存储入的数据的顺序
#栈的顺序是"后进先出",然后将逻辑概念中“队列”中队尾元素
#压入第二个栈的底端,而第一个栈底部的数据,即逻辑概念中“队列”
#中的队首元素则会压入第二个栈的顶端
#这样在Pop输出逻辑队列的首元素的时候便输出了第二个栈顶的数据,即
#逻辑概念中队列的首元素
#概况之:负负得正的意思
#一个栈反序,又一个栈又反,反的反面就是正面。
def PopDataFromStack():
    if len(stack1) == 0:
        return None
    else:
        for i in range(len(stack1)):
            stack2.append(stack1[i])
        return stack2[len(stack2)-1]


#模拟做的队列中的数据 
data  = [1,2,3,4]

#模拟队列所用到的两个栈
stack1 = []
stack2 = []

#将数据Push入栈中
for i in range(len(data)):
    PushDataToStack(data[i])

#pop输出逻辑"队列"队首的元素->4
print(PopDataFromStack())
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章