(C )劍指offer 5 用兩個棧實現佇列

2021-08-15 14:41:10 字數 2158 閱讀 8107

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。

佇列中的元素為int型別。

資料結構:棧、佇列

棧1元素入棧2,先入先出。

參考部落格:

在c++標準庫(stl)中,實現了棧和佇列,方便使用,並提供了若干方法。以下作簡要介紹。

棧(stack)說明及舉例:

使用棧,要先包含標頭檔案 : #include

定義棧,以如下形式實現: stack s; 其中type為資料型別(如 int,float,char等)。

棧的主要操作:

s.push(item);       //將item壓入棧頂  

s.pop(); //刪除棧頂的元素,但不會返回

s.top(); //返回棧頂的元素,但不會刪除

s.size(); //返回棧中元素的個數

s.empty(); //檢查棧是否為空,如果為空返回true,否則返回false

棧操作舉例:

佇列(queue)說明及舉例:

使用佇列,要先包含標頭檔案 : #include

定義佇列,以如下形式實現: queue q; 其中type為資料型別(如 int,float,char等)。

佇列的主要操作:

q.push(item) //將item壓入佇列尾部

q.pop() //刪除隊首元素,但不返回

q.front() //返回隊首元素,但不刪除

q.back() //返回隊尾元素,但不刪除

q.size() //返回佇列中元素的個數

q.empty() //檢查佇列是否為空,如果為空返回true,否則返回false

佇列操作舉例

棧1元素入棧2,先入先出

使用兩個棧來實現佇列的操作。

};兩個佇列實現棧:

class solution

}else}}

void pop()

int top()

bool empty()

private:

queue

queue1;

queue

queue2;

};

(C )劍指offer 5 用兩個棧實現佇列

用兩個棧來做,乙個主棧,用來儲存資料 乙個輔助棧,用來當快取 時間複雜度o n push x 我們直接將x插入主棧中即可 pop 此時我們需要彈出最先進入棧的元素,也就是棧底元素。我們可以先將所有元素從主棧中彈出,壓入輔助棧中。則輔助棧的棧頂元素就是我們要彈出的元素,將其彈出即可。然後再將輔助棧中的...

劍指offer 5 用兩個棧實現佇列

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。思路 棧 先進後出,佇列 先進先出 1 2 3 棧 3 2 1 1 2 3 佇列 1 2 3 stack1進棧後為1 2 3 出棧並儲存在stack2中為3 2 1,stack2出棧就和佇列一致了。push,...

劍指offer 5 用兩個棧實現佇列

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 需要用棧來模擬佇列的push和pop操作。要知道,棧是先進後出,而佇列是先進先出,所以用棧實現佇列的時候,需要兩個棧,進棧可以直接進棧就ok,但是需要首先將兩個棧合為乙個棧,但是出棧的話,需要將原先...