C++實現(xiàn)stack與queue數(shù)據(jù)結(jié)構(gòu)的模擬
棧和隊列都是容器適配器搞出來的,對容器進(jìn)行封裝,從而實現(xiàn)先進(jìn)先出和后進(jìn)先出的結(jié)構(gòu)
stack模擬實現(xiàn)
常規(guī)實現(xiàn)數(shù)據(jù)結(jié)構(gòu)的思路
template<class T> class stack { public: //.... private: T* _a; size_t _size; size_t _capacity; };
使用容器適配器:
**棧的容器適配器Container 可以使用vector list deque(雙端隊列) , 這些容器都必須支持尾插和尾刪接口 push_back 和 pop_back, **stack的默認(rèn)容器適配器使用deque
#pragma once #include<iostream> #include<deque> using namespace std; //棧的容量適配器Container 可以使用vector list deque-雙端隊列 //必須支持尾插和尾刪 push_back 和 pop_back //默認(rèn)的容量適配器使用deque // template<class T,class Container = std::vector<T>> // template<class T,class Container = std::list<T>> namespace Mango { template<class T, class Container = std::deque<T>> class stack { public: void push(const T& x) _con.push_back(x); void pop() _con.pop_back(); //返回棧頂元素 - 即容器的最后一個元素 T top() return _con.back(); size_t size() return _con.size(); bool empty() return _con.empty(); private: Container _con;//容器適配器 }; }
設(shè)配的容器給成模板參數(shù)->我有默認(rèn)的容器適配器,你也可以自己定義合適的,對容器進(jìn)行封裝,達(dá)到后進(jìn)先出的效果
queue模擬實現(xiàn)
隊列的容器適配器Container 必須支持pop_front 和push_back函數(shù) 尾插和頭刪.
所以可以使用list 和deque, 但是不能使用vector,因為不支持頭刪pop_front函數(shù)
queue默認(rèn)的容器適配器使用deque
#pragma once #include<iostream> #include<deque> using namespace std; // 隊列的容器適配器Container 必須支持pop_front 和push_back 尾插和頭刪 // 所以可以使用list 和deque // 但是不能使用vector,因為不支持頭刪pop_front //默認(rèn)的容量適配器使用deque namespace Mango { template<class T, class Container = std::deque<T>> class queue { public: //尾插 void push() _con.push_back(); //頭刪 void pop() _con.pop_front(); //取隊頭數(shù)據(jù) -返回隊頭數(shù)據(jù)的引用 T& front() return _con.front(); //取隊尾數(shù)據(jù) -返回隊尾數(shù)據(jù)的引用 T& back() return _con.back(); size_t size() return _con.size(); bool empty() return _con.empty(); private: Container _con;//容量適配器 }; }
到此這篇關(guān)于C++實現(xiàn)stack與queue數(shù)據(jù)結(jié)構(gòu)的模擬的文章就介紹到這了,更多相關(guān)C++ stack與queue模擬內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VSCode插件開發(fā)全攻略之package.json詳解
這篇文章主要介紹了VSCode插件開發(fā)全攻略之package.json的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05