題目一:兩個棧實現乙個佇列;也就是利用棧的先進後出實現佇列的先進先出特性;這裡實現的介面有:入隊、出隊;
基本思路:
利用兩個棧實現佇列,也就是說利用棧的先進後出的規則實現佇列的先進先出;那麼,如圖:
}題目二:用兩個佇列實現棧思路:利用佇列的先進先出原則實現棧的先進後出;
如圖:
**:
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...