)
解析:用兩個棧:push棧,pop棧
push棧:儲存資料
pop 棧:只要本棧資料不為空,便將push棧資料倒出致此,實現佇列
public
static
class
twostacksqueue
// push棧向pop棧倒入資料
private
void
pushtopop()
}}/*add & push
共同點:
add,push都可以向stack中新增元素。
不同點:
add是繼承自vector的方法,且返回值型別是boolean。
push是stack自身的方法,返回值型別是引數類型別。*/
public
void
add(
int pushint)
//返回棧頂元素,並且將該元素出棧。
public
intpop()
pushtopop()
;return stackpop.
pop();
}//返回棧頂元素,但不彈出該元素。
public
intpeek()
pushtopop()
;return stackpop.
peek()
;}}
解析:用兩個棧:push棧,pop棧
push,help兩棧相互倒元素(只剩乙個元素),實現棧功能
public
static
class
twoqueuestack
public
void
push
(t value)
//返回元素,並彈出該元素
public t poll()
t ans = queue.
poll()
; queue
tmp = queue;
queue = help;
help = tmp;
return ans;
}//返回元素,但不彈出
public t peek()
t ans = queue.
poll()
; help.
offer
(ans)
; queue
tmp = queue;
queue = help;
help = tmp;
return ans;
}public
boolean
isempty()
}
前言:
圖的 寬度優先遍歷一般使用佇列實現 深度優先遍歷一般使用棧實現
若用棧怎麼實現圖的寬度優先遍歷?
若用佇列怎麼實現圖的深度優先遍歷?
答案顯而易見的
棧和佇列常見的面試題
1.使用兩個棧實現乙個佇列 分析 佇列是先進先出的,而棧是先進後出的,所以需要用兩個棧去實現乙個佇列 乙個棧專門進行入佇列操作,另乙個棧負責出佇列操作。標頭檔案 stackandqueueinterview.h 用兩個棧來封裝成乙個佇列 typedef struct queuebystack que...
棧和佇列面試題
遞迴反轉乙個棧 void reverse stack s reverse s int tmp2 s.top s.pop reverse s s.push tmp1 reverse s s.push tmp2 遞迴排序乙個棧 void sort stack s sort s int tmp2 s.to...
棧和佇列面試題
1.使用兩個棧,實現乙個佇列。棧 先進後出,且只能從棧頂pop出資料。佇列 先進先出,對頭pop資料,隊尾push資料。如下 include template class myqueue void pop else if stack2.empty private stack stack1 stack...