如何僅用佇列結構實現棧結構?
思路:用兩個佇列,乙個用於存放資料(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 的運算。沒有了位置概念,保證任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設...