用兩個棧實現乙個佇列,演算法和實現

2021-06-18 23:43:30 字數 869 閱讀 4950

#include #include #include using namespace std;

/* 用兩個棧實現乙個佇列,演算法和實現

*/class queue_my

;queue_my::queue_my()

{}void queue_my::createqueue(const vector& vec)

//入隊函式

//演算法:使新入隊元素始終存放在棧a中,且位於棧頂。

void queue_my::push(int value)

//出隊函式:

//演算法:

//1.優先讓m_stackb中元素出棧,棧b中的棧頂元素即為隊首元素。

//2.如果棧b為空,把m_stacka中元素出棧並將其壓入棧b中,直到使棧a中只剩下棧底元素。

//此時再讓此棧底元素出棧即隊首元素出隊。

void queue_my::pop()

else

//如果棧b為空,把m_stacka中元素出棧並將其壓入棧b中,直到使棧a中只剩下棧底元素。

else

topval = m_stacka.top();

m_stacka.pop();

return;

} } }

int main()

; vectorv(a,a + sizeof(a)/ sizeof(int));

queue_my q;

q.createqueue(v);

q.push(8);

q.push(3);

q.pop();

q.pop();

q.push(11);

return 0;

}

用兩個棧實現佇列和用兩個佇列實現乙個棧

template class cqueue 解題思路 插入操作在stack1中進行,刪除操作在stack2中進行,如果stack2為空,則將stack1中的所有元素轉移到stack2中。例項 include include include using namespace std template c...

用兩個棧實現佇列和用兩個佇列實現乙個棧

1.用兩個堆疊實現乙個佇列。思路 對於insert,把資料插入到第乙個堆疊中 對於remove,如果第二個堆疊為空,把第乙個堆疊的所有元素pop出來並放入第二個堆疊中,然後返回第二個堆疊的第乙個元素。implement queue by 2 stacks using namespace std cl...

用兩個棧實現佇列和用兩個佇列實現乙個棧

template class cqueue 解題思路 插入操作在stack1中進行,刪除操作在stack2中進行,如果stack2為空,則將stack1中的所有元素轉移到stack2中。例項 include include includeusing namespace std template cl...