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,乙個存放資料,另乙個存放...