iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 9
0
自我挑戰組

資料結構大便當系列 第 9

[Day 9] Stack + Queue 最無聊的題目

  • 分享至 

  • xImage
  •  

嘔嘔嘔
當 Pycon 志工還要寫這個真D累
所以我要偷懶一下 ;)


沒錯,題目直接點名了,這個不管哪本資料結構、演算法一定都跑不了的一個無聊題目
所以接下來幾篇都大概就是:用 queue 做 stack,用 stack 做 queue,用 linked-list 做 stack 或 queue :)
而且我也不打算做的太麻煩,就簡單就好:))


今天就從如何用 queue 做一個 stack 吧!

首先我們需要一個 queue

queue<int> q;

再來列出 queue 的功能

  • push - 其實就是將 push 後顛倒(FIFO -> LIFO),就會變成像 stack 了!
void push(int x) {
	q.push(x);
	for(int i=0;i<q.size()-1;++i){
		q.push(q.front());
		q.pop();
	}
}
  • pop
void pop() {
	q.pop();
}
  • top
int top() {
	return q.front();
}
  • empty
bool empty() {
	return q.empty();
}

也許要考慮 overflow, underflow?

  • overflow: occur when we insert an element (by enqueue or push) to a full queue or stack.
  • underflow may occur if we try to remove an element (by dequeue or pop) from an empty queue or stack.

不用,因為直接調用內部函數 :)

參考:https://leetcode.com/problems/implement-stack-using-queues/


上一篇
[Day 8] queue,初探 queue
下一篇
[Day 10] Stack + Queue 最無聊的題目 II
系列文
資料結構大便當30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言