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

2022-08-03 15:15:15 字數 639 閱讀 8937

使用兩個棧stack1和stack2,若新增元素則直接壓入棧stack1中;若刪除元素,則要分情況:

如果棧stack2為空,則把棧stack1中的元素彈出壓入棧stack2中,此時從棧stack2中彈出資料的順序符合佇列的特點(先進先出)

如果棧stack2非空,則直接彈出棧stack2頂部元素即可

templateclass

cqueue;

template

stack.push(element);

}template

t cqueue::deletehead()

}if(stack2.size() == 0

)

throw

new exception("

queue is empty.");

t head =stack2.top();

stack2.pop();

return

head;

}

考查應聘者對棧和佇列的理解

考查應聘者寫與模板相關的**的能力

考查應聘者分析複雜問題的能力。應聘者能否通過具體的例子分析問題,通過畫圖的手段把抽象的問題具體化,從而解決這個相對複雜的問題,是能否順利通過面試的關鍵。

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

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別 棧是保證元素後進先出,佇列保證元素先進先出,它們都只有到來先後順序 題目思路 需要用兩個棧來實現乙個佇列,乙個棧a是先進後出,將棧a中出的元素存放在棧b中,負負得正,實現佇列的先進先出功能。存入時,存在棧a,...

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

二 關鍵 1.關於佇列的插入和刪除 只在stack1中插入,只在stack2中刪除。2.關於倒水操作 只在stack2為空時,把stack1中元素彈出壓倒stack2中。其他情況不進行倒水的操作。三 解釋 刪除乙個元素的步驟 當stack2不是空的時候,直接彈出stack2棧頂元素 當stack2是...

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

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。入隊 將元素進棧stack1 出隊 判斷棧stack2是否為空,如果為空,則將棧stack1中所有元素彈出pop,並push進stack2,stack2出棧 如果不為空,棧stack2直接出棧。即 棧a用來作入佇列 棧...