面試題7 用兩個棧實現佇列

2022-05-06 00:57:09 字數 1041 閱讀 6653

思路:題目要求我們利用兩個「先進後出」的棧實現乙個「先進先出」的佇列。

插入時,將插入的元素放入stack1中。假設現在stack1中已經插入了若干元素,

要進行刪除操作。顯然現在棧頂的元素是後插入的應該後出,棧底的元素才應該

被刪除,而在stack1中無法直接刪除棧底元素。此時就應該借助stack2,之前

未對stack2進行操作,stack2為空。將stack1中的元素逐個出棧壓入stack2中,

那麼stack2中的棧頂元素就是要刪除的元素。之後要插入元素就壓入stack1中,

要刪除元素就將stack2棧頂元素刪除,若stack2為空,則將stack1的全部元素

逐個出棧壓入stack2中,再完成刪除,若stack1和stack2都為空,無法完成刪除操作。

注意:1、本題最好寫成模板,更為通用。

2、可以寫個判斷佇列是否非空的函式。

code:

1 #include 2 #include 3 #include 

4using

namespace

std;

56 templateclass

cqueue7;

1920

//建構函式

21 templatecqueue::cqueue(void)22

2526

//析構函式

27 templatecqueue::~cqueue(void)28

3133

3637 templatet cqueue::deletehead()

3847}48

49 t head =stack2.top();

50stack2.pop();

51return

head;52}

5354 templatebool cqueue::empty()

5559

6061

intmain()

6277

else

7882}83

}84return0;

85 }

面試題7 用兩個佇列實現棧

題目 用兩個佇列實現乙個棧。實現兩個函式push和pop,完成從棧頂插入和刪除結點的功能。思路 1 入棧 總是插入到非空佇列 中 2 出棧 將非空佇列中的前n 1個元素依次出佇列push進空佇列中,然後將最後乙個元素出佇列,完成出棧操作。c include stdafx.h include incl...

面試題7 用兩個棧實現佇列

template class cqueue 在上述佇列的宣告中可以看出,乙個佇列包含了兩個棧stack1和stack2,因此這道題的意圖是要求我們操作這兩個 先進後出 的棧實現乙個 先進先出 的佇列cqueue。我們通過乙個具體的例子來分析往該佇列插入和刪除元素的過程。首先插入乙個元素a,不妨先把它...

面試題7 用兩個棧實現佇列

templateclass queue queue t deletehead private stacks1 stacks2 首先,我們需要知道佇列和棧他們各自的特點。他們都是乙個線性資料結構。在stl裡面,他們是作為容器介面卡出現的。儘管如此,棧和佇列在邏輯和對資料的操作方式上還是有很大的區別的。...