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

2021-07-04 07:01:54 字數 1313 閱讀 6474

用兩個棧實現佇列的push() 和 pop()

#include 

#include

#include

using

namespace

std;

template

class cqueue

; ~cqueue() {};

t deletehead();

private:

stack

stack1;

stack

stack2;

};template

template

t cqueue::deletehead()

}if (stack2.empty())

t head = stack2.top();

stack2.pop();

return head;

}

void test(int actual, int excepted)

int main()

catch (runtime_error err)

return

0;}

兩個佇列實現乙個棧

進棧就是進佇列,出棧 先把元素進乙個佇列queue1,然後除了隊尾元素其餘全部進佇列queue2, 然後queue1出佇列。

#include

#include

#include

#include

using

namespace

std;

template

class cstack

; ~cstack(void){};

void push(const t& node);

t pop();

private:

queue

queue1;

queue

queue2;

};//插入元素

template

void cstack::push(const t& element)

//刪除元素

template

t cstack::pop()

t& data=queue2.front();

queue2.pop();

return data;

}else

//如果queue2為空

t& data=queue1.front();

queue1.pop();

return data;

}}

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

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就...

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

一 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。二 1 自己 基本思路 乙個棧用於壓縮,乙個專門用於彈出。因為棧是先進後出,所有的元素入棧再出棧,再入棧就可以將順序調整過來。但是沒有想到優化。class solution int pop int tem...