We will introduce the basic operations on the C ++ stack template in detail today. I hope that my friends who have just been using this language can fully master the application skills through the interpretation of this article to facilitate our practical application.
C ++ stack template declaration
- template <class T>
- struct StackNode
- {
- T typeData;
- StackNode *nextNode;
- };
- template <class T>
- class DZ_Stack
- {
- public:
- bool Push(const T data);
- bool Pop(T& data);
- bool Peek(T& data);
- bool IsEmpty();
- DZ_Stack();
- virtual ~DZ_Stack();
- private:
- StackNode<T> *pStackTop;
- int iNodeCount;
- };
C ++ stack template implementation
- template <class T>
- DZ_Stack<T>::DZ_Stack()
- {
- pStackTop=NULL;
- iNodeCount=0;
- }
- template <class T>
- DZ_Stack<T>::~DZ_Stack()
- {
- while(!IsEmpty())
- {
- StackNode<T> *pStackNode= pStackTop;
- pStackToppStackTop=pStackTop->nextNode;
- delete (pStackNode);
- pStackNode=NULL;
- }
- pStackTop=NULL;
- }
- template <class T>
- bool DZ_Stack<T>::Push(const T data)
- {
- StackNode<T> *pStackNode=new StackNode<T>;
- if( NULL == pStackNode )
- return false;
- pStackNode->typeData=data;
- pStackNode->nextNode=pStackTop;
- pStackTop=pStackNode;
- iNodeCount++;
- return true;
- }
- template <class T>
- bool DZ_Stack<T>::Pop(T& data)
- {
- if ( IsEmpty() )
- return false;
- data=pStackTop->typeData;
- StackNode<T> *pStackNode= pStackTop;
- pStackToppStackTop=pStackTop->nextNode;
- delete (pStackNode);
- iNodeCount--;
- return true;
- }
- template <class T>
- bool DZ_Stack<T>::Peek(T& data)
- {
- if (IsEmpty())
- return false;
- data=pStackTop->typeData;
- return true;
- }
- template <class T>
- bool DZ_Stack<T>::IsEmpty()
- {
- if ( NULL == pStackTop )
- return true;
- else
- return false;
- }
- #endif // !defined(AFX_DZ_STACK_H__10036803_D752_4EF7_
852D_DD6B377D7AB9__INCLUDED_)
The preceding section describes the C ++ stack template.