實現myqueue
類:
說明:
示例 1:
輸入:
["myqueue", "push", "push", "peek", "pop", "empty"]
[, [1], [2], , , ]
輸出:[null, null, null, 1, 1, false]
解釋:myqueue myqueue = new myqueue();
myqueue.push(1); // queue is: [1]
myqueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
myqueue.peek(); // return 1
myqueue.pop(); // return 1, queue is [2]
myqueue.empty(); // return false
因為棧是先進後出,所以要想實現佇列的先進先出,只用乙個棧記錄並不夠,使用第二個棧來倒轉記錄,並實現佇列的pop
隊首元素
兩個棧:in
實現入佇列操作,out
實現出佇列。
因為棧不能pop
最隊首元素,需要pop
的時候。如果out
為空,就把in
的元素依次出棧並在out
中壓棧。
如:如佇列順序為[3,2,1] 則 in:[1,2,3],out==>in:,out=[3,2,1]
如果不為空,out
自行出棧,而後面入佇列的元素進入in
,也不會妨礙到整個入佇列元素的順序和其出佇列的操作。
**
class myqueue
}public:
myqueue()
void push(int x)
int pop()
int t=out.top();
out.pop();
return t;
}int peek()
int t=out.top();
return t;
}bool empty()
};/**
* your myqueue object will be instantiated and called as such:
* myqueue* obj = new myqueue();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->empty();
*/
力扣 232 用棧實現佇列
一 題目描述 使用棧實現佇列的下列操作 示例 myqueue queue new myqueue queue.push 1 queue.push 2 queue.peek 返回 1 queue.pop 返回 1 queue.empty 返回 false說明 二 解題思路 建立兩個棧a和b。棧a專門用...
力扣232號題 用棧實現佇列
push x 將乙個元素放入佇列的尾部。pop 從佇列首部移除元素。peek 返回佇列首部的元素。empty 返回佇列是否為空。myqueue queue new myqueue queue.push 1 queue.push 2 queue.peek 返回 1 queue.pop 返回 1 que...
232 用棧實現佇列 225 用佇列實現棧
用棧實現佇列 佇列是先進先出,實現佇列的最直觀的方法是用鍊錶。但本題是要求使用棧。本題兩個stack相互倒,負負得正 class myqueue def init self self.instack self.outstack defpush self,x def pop self if len s...