棧是一種先進後出的數據結構(FILO),這裏使用以前實現的動態數組實現。ios
/************************************************************************* > File Name : Stack.h > Author : Harold > Mail : 2106562095@qq.com > Github : www.github.com/Haroldcc > Created Time : 2020年03月03日 15時00分16秒 ************************************************************************/ #ifndef STACK_H_ #define STACK_H_ #include "arrayList.h" #include <iostream> /***** 棧 *****/ /* 棧是一種特殊的鏈表結構, * 這裏直接使用數組鏈表提供實現 */ template <typename T> class Stack { private: arrayList<T> list; public: ~Stack() {} int size() const; bool empty() const; void push(const T &element); // 入棧 void pop(); // 出棧 T &top(); // 獲取棧頂元素 void clear(); //void output(std::ostream &out); }; template <typename T> int Stack<T>::size() const { return list.size(); } template <typename T> bool Stack<T>::empty() const { return list.isEmpty(); } template <typename T> void Stack<T>::push(const T &element) { list.add(element); } template <typename T> void Stack<T>::pop() { list.removeByIndex(list.size() - 1); } template <typename T> T &Stack<T>::top() { return list.getElement(list.size() - 1); } template <typename T> void Stack<T>::clear() { list.clear(); } #endif
/************************************************************************* > File Name : testStack.cpp > Author : Harold > Mail : 2106562095@qq.com > Github : www.github.com/Haroldcc > Created Time : 2020年03月03日 15時14分31秒 ************************************************************************/ #include <iostream> #include "Stack.h" int main() { Stack<int> stack; stack.push(11); stack.push(22); stack.push(33); stack.push(44); std::cout << stack.top() << std::endl; stack.pop(); std::cout << stack.top() << std::endl; stack.pop(); std::cout << stack.top() << std::endl; stack.pop(); std::cout << stack.top() << std::endl; stack.pop(); return 0; }
44 33 22 11