今天,我们一起用C++写一个顺序栈,具体如下:
SeqStack.h具体内容如下:
template<typename Type> class SeqStack{ public: SeqStack(int sz) :m_ntop(-1), m_nMaxSize(sz){ m_pelements = new Type[sz]; if (m_pelements == NULL){ cout << "Application Error!" << endl; exit(1); } } ~SeqStack(){ delete[] m_pelements; } public: void Push(const Type item); //push data Type Pop(); //pop data Type GetTop() const; //get data void Print(); //print the stack void MakeEmpty(){ //make the stack empty m_ntop = -1; } bool IsEmpty() const{ return m_ntop == -1; } bool IsFull() const{ return m_ntop == m_nMaxSize - 1; } private: int m_ntop; Type *m_pelements; int m_nMaxSize; }; template<typename Type> void SeqStack<Type>::Push(const Type item){ if (IsFull()){ cout << "The stack is full!" << endl; return; } m_pelements[++m_ntop] = item; } template<typename Type> Type SeqStack<Type>::Pop(){ if (IsEmpty()){ cout << "There is no element!" << endl; //exit(1); } return m_pelements[m_ntop--]; } template<typename Type> Type SeqStack<Type>::GetTop() const{ if (IsEmpty()){ cout << "There is no element!" << endl; //exit(1); } return m_pelements[m_ntop]; } template<typename Type> void SeqStack<Type>::Print(){ cout << "bottom"; for (int i = 0; i <= m_ntop; i++){ cout << "--->" << m_pelements[i]; } cout << "--->top" << endl << endl << endl; }main.cpp具体内容如下:
#include<iostream> #include <stdlib.h> using namespace std; #include "SeqStack.h" int main(){ SeqStack<int> stack(10); int init[10] = { 1, 2, 6, 9, 0, 3, 8, 7, 5, 4 }; for (int i = 0; i < 10; i++) { stack.Push(init[i]); } stack.Print(); stack.Push(88); cout << stack.Pop() << endl; stack.Print(); stack.MakeEmpty(); stack.Print(); stack.Pop(); system("pause"); return 0; }运行效果如图1所示:
图1 运行效果