佇列結構與棧結構之間的相互實現

2021-10-08 10:15:12 字數 1213 閱讀 7577

如何僅用佇列結構實現棧結構?

思路:用兩個佇列,乙個用於存放資料(queue),當要取出資料時,把除了queue佇列頭以為的資料依次存到的另乙個佇列(help)中,再把佇列頭取出,然後改變queue和help的指向,資料僅能從queue佇列存入。

具體實現:

public

static

class

twoqueuesstack

public

void

push

(int pushint)

//只取不刪

public

intpeek()

while

(queue.

size()

!=1)int res = queue.

poll()

; help.

add(res)

;swap()

;return res;

}public

intpop()

while

(queue.

size()

>1)

int res = queue.

poll()

;swap()

;return res;

}private

void

swap()

如何僅用棧結構實現佇列結構?

思路:準備兩個棧,乙個只能存資料(push),乙個只能取資料(pop),取資料時,如果pop棧是否為空,若為空,把push棧的資料全部存入pop棧再pop(),否則直接pop();peek()操作同理

具體實現:

public

static

class

twostacksqueue

public

void

push

(int pushint)

public

intpoll()

else

if(stackpop.

empty()

)}return stackpop.

pop();

}public

intpeek()

else

if(stackpop.

empty()

)}return stackpop.

peek()

;}}

棧與佇列之間的相互實現

棧與佇列之間的相互實現,是面試中的經典試題。入隊 元素進棧a 出隊 先判斷棧b是否為空,為空則將棧a中的元素 pop 出來並 push 進棧b,再棧b出棧,如不為空則棧b直接出棧 複雜度分析 這樣用兩個棧實現乙個佇列,入隊的複雜度為o 1 出隊的複雜度則變為o n 而直接用 python 的單個列表...

佇列與棧的相互實現

problem 如何僅用佇列結構實現棧結構?solution 佇列是先進先出,而棧是先進後出 故使用兩個佇列來實現乙個棧的功能 乙個存放原來的資料,另乙個做資料倒騰的容器 code 1 class queuetostack211 inttop 1219 int res data.front 20te...

棧和佇列的結構實現

棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,它的特點在於只能允許在容器的一端 稱為棧頂端指標,英語 top 進行加入資料 英語 push 和輸出資料 英語 pop 的運算。沒有了位置概念,保證任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設...