1. 程式人生 > >c++使用模板(template)封裝Stack

c++使用模板(template)封裝Stack

argv new include pre inline char 出棧 urn 實例

 1 #include <iostream>
 2 template<class Type>
 3 class Stack
 4 {
 5     public:
 6         Stack(int MaxStackSize=100);
 7         bool IsFull();
 8         bool IsEmpty();
 9         void StackFull();
10         void StackEmpty();
11         void Push(const Type& x);
12         Type Pop(Type& x);
13 private: 14 int top; 15 Type * stack; 16 int MaxSize; 17 }; 18 template<class Type> 19 Stack<Type>::Stack(int MaxStackSize):MaxSize(MaxStackSize)//構造函數 20 { 21 stack = new Type[MaxSize]; 22 top = -1; 23 } 24 template<class Type> 25 inline bool Stack<Type>::IsFull()//
判斷棧滿 26 { 27 if(top == MaxSize-1) return true; 28 else return false; 29 } 30 template<class Type> 31 inline bool Stack<Type>::IsEmpty()//判斷棧空 32 { 33 if(top == -1) return true; 34 else return false; 35 } 36 template<class Type> 37 void Stack<Type>::StackFull()
38 { 39 std::cout<<"StackFull,PushFail\n"; 40 } 41 template<class Type> 42 void Stack<Type>::StackEmpty() 43 { 44 std::cout<<"StackEmpty,PopFail\n"; 45 } 46 template<class Type> 47 void Stack<Type>::Push(const Type& x)//入棧 48 { 49 if(IsFull()) StackFull(); 50 else stack[++top] = x; 51 } 52 template<class Type> 53 Type Stack<Type>::Pop(Type& x)//出棧 54 { 55 if(IsEmpty()) 56 { 57 StackEmpty(); 58 return -1; 59 } 60 x = stack[top--]; 61 return x; 62 } 63 int main(int argc, char** argv)//測試代碼 64 { 65 Stack<int> S(100);//實例化空間大小為100的棧 66 for(int i=0;i<10;i++) 67 S.Push(i);//將從0-9的數入棧 68 int tmp; 69 while(!S.IsEmpty())//出棧 70 { 71 std::cout<<S.Pop(tmp)<<std::endl; 72 } 73 std::cout<<S.Pop(tmp)<<std::endl; 74 return 0; 75 }

c++使用模板(template)封裝Stack