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