棧和佇列的常見面試題 棧實現佇列 佇列實現棧

2021-10-19 05:13:14 字數 1629 閱讀 4416

)

解析:

用兩個棧: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...