7
要求
時間限制:1秒 空間限制:32768K
題目描述
用兩個堆疊來實作一個佇列,完成佇列的Push和Pop操作, 佇列中的元素為int型別
解題思路
利用堆疊可以顛倒一個序列的順序這個特性來思考
像這類題目只要模擬一下就能找到答案:先加入一些元素,然后思考如何彈出你想要的元素,這樣就解決了彈出的問題;再思考添加的問題

這道題中,stack1用于入隊,stack2用于出隊,只是出隊是要注意:要保證stack2不為空時才可以出隊;如果它為空,就要先將stack1中所有元素彈出到stack2中,再從stack2中彈出一個元素;如果它不為空,直接從stack2中彈出一個元素即可
代碼
class Solution
{
public:
void push(int node)
{
stack1.push(node);
}
int pop()
{
if(stack2.empty())
{
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
}
if(stack2.empty())
{
cout << "佇列為空" << endl;
abort();
}
int res = stack2.top();
stack2.pop();
return res;
}
private:
stack<int> stack1; //入
stack<int> stack2; //出
};
拓展
用兩個佇列來模擬堆疊,思考方式和這道題一樣

兩個佇列的元素要不停的倒來倒去
由于還要搬磚,沒有辦法一一回復私信把學習資料發給大家,我直接整理出來放在下面,覺得有幫助的話可以下載下來用于學習
鏈接:https://pan.baidu.com/s/1C-9TE9ES9xrySqW7PfpjyQ 提取碼:cqmd
感謝各位人才的點贊、收藏、關注
微信搜「三年游戲人」識訓一枚有情懷的游戲人,第一時間閱讀最新內容,獲取優質作業內推
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/527851.html
標籤:其他
