stack.h
来自「压缩包里有教材<<C++模式设计-基于QT4开源跨平台开发框架>」· C头文件 代码 · 共 84 行
H
84 行
//start id="classdef"#include <qstd.h>/** A node in a linked list */template<class T> class Node { public: Node(T invalue): m_Value(invalue), m_Next(0) {} ~Node() ; T getValue() const {return m_Value;} void setValue(T value) {m_Value = value;} Node<T>* getNext() const {return m_Next;} void setNext(Node<T>* next) {m_Next = next;} private: T m_Value; Node<T>* m_Next;};template<class T> Node<T>::~Node() { using namespace qstd; cout << m_Value << " deleted " << endl; if(m_Next) { delete m_Next; }}/** A template-generic stack implemented as a single-linked list.*/template<class T> class Stack { public: Stack(): m_Head(0), m_Count(0) {} ~Stack<T>() {delete m_Head;} ; void push(const T& t); T pop(); T top() const; int count() const; private: Node<T> *m_Head; int m_Count;};//end/** Notice the function definitions are all in the header file. This is necessary for the compiler to generate code from a template declaration. *///start id="fundef"template <class T> void Stack<T>::push(const T& value) { Node<T> *newNode = new Node<T>(value); newNode->setNext(m_Head); m_Head = newNode; ++m_Count;}template <class T> T Stack<T>::pop() { Node<T> *popped = m_Head; if (m_Head != 0) { m_Head = m_Head->getNext(); T retval = popped->getValue(); popped->setNext(0); delete popped; --m_Count; return retval; } return 0;}//endtemplate <class T> inline T Stack<T>::top() const { return m_Head->getValue(); }template <class T> inline int Stack<T>::count() const { return m_Count;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?