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

2021-10-12 17:16:56 字數 1610 閱讀 7373

題目描述:示例 1:

輸入:
示例 2:

輸入:

思路:借用兩個棧,乙個為出棧,乙個為入棧,入棧只放入資料。當出棧為空時,將入棧中的資料全部放入到出棧中。

**:

class

cqueue

//時間複雜度o(1)

void

(int value)

//時間複雜度o(n)

intdeletehead()

}int ret = _outstack.

top();

_outstack.

pop();

return ret;

//返回

}private

: stack<

int> _instack;

//入棧

stack<

int> _outstack;

//出棧

};

題目描述:

使用佇列實現棧的下列操作:

push(x) – 元素 x 入棧

pop() – 移除棧頂元素

top() – 獲取棧頂元素

empty() – 返回棧是否為空

思路:單佇列實現棧時,只需要考慮push資料的時候,如何push。先求出佇列中元素個數,再push資料進去,迴圈將push資料前的元素個數都push進隊尾中,則形成了佇列。

**:

class

mystack

//時間複雜度o(n)

void

push

(int x)

}//時間複雜度o(1)

intpop()

inttop()

bool

empty()

private

: queue<

int> _queue;

//單佇列

};

思路:兩個佇列實現棧,保證乙個佇列始終為空,乙個佇列不為空。push資料時,空佇列先放入資料,再將不空佇列的元素都push進空佇列中。最後兩個佇列進行交換。

**:

class

mystack

//時間複雜度o(n)

void

push

(int x)

swap

(_fullqueue, _emptyqueue)

;//交換兩個佇列

}int

pop(

)int

top(

)bool

empty()

private

: queue<

int> _fullqueue;

//不為空佇列

queue<

int> _emptyqueue;

//空佇列

};

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

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。var cqueue function param value return this.stacka.push value return cqueue.prototype.deletehead function els...

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

劍指offer 面試題7 用兩個棧實現佇列。templateclass cqueue 我們試著用兩個棧來模擬佇列的操作,發現如下可行操作 完整 實現 面試題7 用兩個棧實現佇列 分別完成在隊尾插入結點和在隊頭刪除結點的功能。date 2014 06 27 include include includ...

用兩個棧實現佇列與用兩個佇列實現棧

pragma once要在標頭檔案的最開始加入這條雜注,就能夠保證標頭檔案只被編譯一次 pragma once是編譯器相關的,就是說即使這個編譯系統上有效,但在其他編譯系統也不一定可以,不過現在基本上已經是每個編譯器都有這個雜注了。用兩個棧實現佇列 每個模板函式的實現都需要加template模板列表...