棧和佇列面試題

2021-08-24 18:00:24 字數 1844 閱讀 6962

1.使用兩個棧,實現乙個佇列。

棧:先進後出,且只能從棧頂pop出資料。

佇列:先進先出,對頭pop資料,隊尾push資料。

**如下:

#include

template

class myqueue

void pop()

else

if (!stack2.empty())}}

private:

stack

stack1;

stack

stack2;

};

2.兩個佇列實現乙個棧棧:先進後出,且只能從棧頂pop出資料。

佇列:先進先出,對頭pop資料,隊尾push資料。

};3.元素入棧出棧的順序合法性我們知道棧有這樣的性質:後進先出 只能在棧頂入棧和出棧。

**如下:

#include

#include

bool ispoporder(vector

pushv, vector

popv)

}if (stackdata.empty()&& stackdata.size() == 0)

return

false;

}

4.乙個陣列實現兩個棧(共享棧)

**如下:

templateclass stackarray 

//壓棧(壓棧如果兩個棧頂指標相遇,可以考慮擴容)

void stack1push(const t& data)

void stack2push(const t& data)

//出棧

void stack1pop()

void stack2pop()

//獲取棧頂元素

t& stack1top()

t& stack2top()

//棧是否為空

bool stack1empty()

bool stack2empty()

~stackarray()

}private:

t * _array;

int _capacity;

int top1;//stack1 棧頂位置

int top2;//stack2 棧頂位置

};

棧和佇列面試題

遞迴反轉乙個棧 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...

棧和佇列面試題

採用順序棧實現棧基本操作 採用鏈式佇列實現佇列基本操作 define maxsize100 typedef int sdatatype typedef struct stack stack typedef struct minstack minstack void stackinit stack s...

棧和佇列面試題總結

1.在o 1 時間內實現棧的push pop min操作 分析 push和pop操作都很好做到,但是min操作就沒這麼容易了,首先想到的肯定是設定乙個flag在每次push的時候紀錄下最小值,但是考慮一下如果pop的時候正好pop掉了最小值怎麼辦呢?解決 使用兩個stack,乙個存放資料,另乙個存放...