算法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())
 

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