資料結構之棧,實現,應用,兩個棧實現佇列

2021-08-20 21:15:06 字數 689 閱讀 7959

兩個棧實現佇列

兩個棧嚴格區分開來使用,乙個專門用來做插入(插入棧),乙個專門用來做彈出(彈出棧)。這樣在做插入的時候什麼都不需要做,直接呼叫插入棧的push方法就可以了。但是在彈出的時候就要麻煩一點,先判斷在彈出棧中是否包含資料,如果包含,直接從頂部彈出,如果不包含,把插入棧中的元素挨個匯入到彈出棧中。然後再從棧頂將第乙個元素彈出。

class solution

public:

void push(int node) {

stack1.push(node);

int pop() {

if(!stack2.empty())

int ret=stack2.top();

stack2.pop();

return ret;

else

if(stack1.empty())

return -1;

while(!stack1.empty())

stack2.push(stack1.top());

stack1.pop();

int ret=stack2.top();

stack2.pop();

return ret;

private:

stackstack1;

stackstack2;

資料結構中用兩個佇列實現棧

棧 後進先出 lifo last in first out 最後插入的元素最先出來。佇列 先進先出 fifo first in first out 最先插入的元素最先出來。圖 1 當棧裡面插入元素 abcd 的時候,元素a在棧底 最後出去 d在棧頂 最先出去 圖 2 將元素 abc 從q1中頭刪,然...

兩個棧實現佇列 兩個佇列實現棧

1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...

兩個棧實現佇列,兩個佇列實現棧

include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...