基于visual Studio2013解决面试题之0203栈实现
生活随笔
收集整理的這篇文章主要介紹了
基于visual Studio2013解决面试题之0203栈实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
解決代碼及點評
/*用模板類實現棧*//* 標準輸入輸出流頭文件 */ #include <iostream> /* 將標準庫的std命名空間下標示符提升到全局 */ using namespace std;/* 定義棧模板庫 */ template <class T> class stack { public:stack(int len = 10); /* 構造函數,默認棧深度為10 */~stack(); /* 析構函數 */void push(T value); /* 壓棧 */void pop(); /* 彈出棧頂元素 */void empty(); /* 清空棧 */T top(); /* 獲取棧頂元素 */int size(); /* 棧大小 */T min(); /* */ private:int ntop; /* 當前top位置 */int len; /* 棧空間長度 */T *arr; /* 棧數據 */int mtop; /* 輔助棧,用來保存最小值的 */int mlen; /* 輔助棧長度 */T *marr; /* 輔助棧數據 */};template <class T> stack<T>::stack(int len) {if (len <= 0){return;}this->len = len; /* 初始化棧長度 */ntop = 0; /* 注意空棧是用0表示,那么棧頂元素應該是ntop-1 */arr = new T[len]; /* 申請空間 *//* 輔助棧的大小和棧大小相同 */mlen = len; //輔助棧,每次彈入數據都判斷最小值,//將最小值入輔助棧,元素出棧時也和輔助棧比較//所以輔助棧的棧頂元素一直是最小值mtop = 0;marr = new T[mlen]; }/* 析構函數,當構造函數有申請空間或者使用系統資源時,必須提供析構函數 */ template <class T> stack<T>::~stack() {delete[]arr;delete[]marr; }/* 壓棧 */ template <class T> void stack<T>::push(T value) {/* 首先判斷是否有空間,沒有空間則直接返回吧 */if (ntop == len){return;}/* 把值保存到棧頂,并將棧頂下標加1 */arr[ntop++] = value;// 輔助棧用來保存最小值,當輔助棧還是空的時候// 直接入棧,如果不空,則需要比較棧頂是否大于valueif (mtop == 0)marr[mtop++] = value;else if (value < marr[mtop - 1]){marr[mtop++] = value;}}/* 出棧 */ template <class T> void stack<T>::pop() {// 如果棧空了,則出棧失敗if (ntop == 0){return;}// 如果彈出的正好是最小值,那么把輔助棧先出棧if (arr[ntop - 1] == marr[mtop - 1]){mtop--;}// 進行出棧操作ntop--; }/* top,獲取棧頂元素,也就是 ntop-1指示的那個值 */ template <class T> T stack<T>::top() {if (ntop == 0){return NULL;}return arr[ntop - 1];}/* 返回棧元素個數,正好是ntop */ template <class T> int stack<T>::size() {return ntop; }/* 清空棧,只需要將ntop恢復成0,即可 */ template <class T> void stack<T>::empty() {if (ntop == 0){return;}ntop = 0;mtop = 0;}/* 獲取棧最小值,就是輔助棧的棧頂 */ template <class T> T stack<T>::min() {return marr[mtop - 1];}/* 測試主函數 */ int main() {stack<int> s;s.pop();s.push(2);s.push(3);s.push(5);s.push(1);s.push(7);s.pop();s.pop();cout << s.size();cout << endl << s.top();cout << endl << s.min();system("pause");return 0; }代碼下載及其運行
代碼下載地址:http://download.csdn.net/detail/yincheng01/6704519
解壓密碼:c.itcast.cn
下載代碼并解壓后,用VC2013打開interview.sln,并設置對應的啟動項目后,點擊運行即可,具體步驟如下:
1)設置啟動項目:右鍵點擊解決方案,在彈出菜單中選擇“設置啟動項目”
2)在下拉框中選擇相應項目,項目名和博客編號一致
3)點擊“本地Windows調試器”運行
程序運行結果
轉載于:https://www.cnblogs.com/niulanshan/p/6175177.html
總結
以上是生活随笔為你收集整理的基于visual Studio2013解决面试题之0203栈实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式操作系统 NuttX 5.0 发布
- 下一篇: 一步步学习SPD2010--词汇表