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

2021-10-04 10:07:04 字數 892 閱讀 7114

題目:用兩個棧實現佇列。請完成再佇列尾部插入資料和頭部刪除資料的功能。

思路:佇列的特點是「先進先出」,若要用這兩個棧實現這個功能,則這兩個棧中乙個做主棧,乙個做輔棧。當入隊時,資料放入主棧;當出隊時,因為要實現先進入佇列的先出佇列,而棧的特點是,先進入棧的後出棧,若將主棧的資料逐一取出,放入到輔棧中,則會出現主棧中棧底的元素出現在輔棧的棧頂,此時再取出輔棧棧定的元素就是實現了先進入佇列的先出佇列的功能。

**:queue.h

#ifndef _file_queue_h_

#define _file_queue_h_

#include

using

namespace std;

template

<

typename t>

class

queue

;#endif

// !_file_queue_h_

queue.cpp

#include

"queue.h"

//入隊

template

<

typename t>

void queue::(

const t& node)

//出隊

template

<

typename t> t queue

::deletehead()

}if(stack2.

size()

==0) 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用來作入佇列 棧...