劍指offer 棧和佇列相關題目 後序會補充

2021-09-27 21:55:43 字數 1733 閱讀 9325

題目一:兩個棧實現乙個佇列;也就是利用棧的先進後出實現佇列的先進先出特性;這裡實現的介面有:入隊、出隊;

基本思路:

利用兩個棧實現佇列,也就是說利用棧的先進後出的規則實現佇列的先進先出;那麼,如圖:

}題目二:用兩個佇列實現棧思路:利用佇列的先進先出原則實現棧的先進後出;

如圖:

**:

templateclass stack

;templatestack::stack(void)

templatestack::~stack(void)

else if (queue1.size()>0)//如果q1不為空,那麼往q1中插入元素

else if(queue2.size()>0)//如果q2不為空,那麼往q1中插入元素 }

templatet stack::deletetail(void ) //出棧操作

ret = queue1.front();

queue1.pop();

cout<題目三:棧的入棧和出棧順序;

輸入兩個整數序列,第乙個序列表示棧的壓入序列,請判斷第二個序列是否為該棧的彈出序列;假設壓入棧的所有數字均不相等。例如:序列是某棧的入棧序列,序列是該棧的乙個彈出序列,但是就不可能是該棧的彈出序列;

分析:借助乙個輔助棧來實現。

//壓入壓棧序列的數字

st1.push(*pnextpush);

pnextpush++;

} if(st1.top() != *pnextpop)

st1.pop();

pnextpop++;

} //最終,當輔助棧為空並且pnextpop指向出棧序列的尾部時,表示此齣棧序列合法

if(st1.empty() && pnextpop-poparr == len)

return flag;

}

劍指offer 棧 佇列類題目

題目 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 題目中有兩個棧stack1和stack2,用來模擬佇列的操作,我是想把第乙個stack1作為資料儲存,第二個stack2作為中轉。佇列的特點是先進先出,1 入隊操作,因為用stack1作為儲存,首先得判斷上...

棧和佇列 劍指offer

題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的 min函式。class solution def init self self.elem def push self,node def pop self return self.elem.pop def top self return...

《劍指offer》 佇列和棧

一 兩個棧實現乙個佇列 題目 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 用乙個棧來存,另乙個棧出。需要考慮的情況如下 class solution int pop else if stack1.size 0 出隊 res stack2.top sta...