清华大学出版社出版的c++程序设计课本

源代码在线查看: 9-8.h

软件大小: 172 K
上传用户: zln12345
关键词: 清华大学 出版社 程序设计
下载地址: 免注册下载 普通下载 VIP

相关代码

				//9-8.h
				#ifndef STACK_CLASS
				#define STACK_CLASS
				
				#include 
				#include 
				
				const int MaxStackSize = 50;  //栈的大小,即栈中元素的最大个数
				
				//类的定义
				template 
				class Stack
				{
				    private:
				        T stacklist[MaxStackSize];  //数组,用于存放栈的元素
				        int top;  //栈顶位置(数组下标)
				    public:
				        Stack (void);  // 构造函数,初始化栈
				        
				        // 栈更新操作
				        void Push (const T& item);  //将元素item压入栈
				        T Pop (void);  //将栈顶元素弹出栈
				        void ClearStack(void);  //将栈清空
				        
				        // 访问栈顶元素
				        T Peek (void) const;
				        
				        // 测试栈的状态
				        int StackEmpty(void) const;
				        int StackFull(void) const;      // array implementation
				};
				
				//类的实现
				// 构造函数
				template 
				Stack::Stack (void) : top(-1)  //栈顶初始化为-1
				{}
				
				// 将元素item压入栈
				template 
				void Stack::Push (const T& item)
				{
				    // 如果栈满,程序终止
				    if (top == MaxStackSize-1)
				    {
				        cerr 				        exit(1);
				    }
				    
				    top++;    //栈顶指针增1
				    stacklist[top] = item;    //将新元素压入栈顶
				}
				
				// 将栈顶元素弹出栈
				template 
				T Stack::Pop (void)
				{
				    T temp;
				
				    // 如果栈空,程序终止
				    if (top == -1)
				    {
				        cerr 				        exit(1);
				    }
				    
				    temp = stacklist[top];  //取出栈顶元素
				    
				    top--;  //栈顶指针自减
				    return temp;  //返回栈顶元素
				}
				
				// 访问栈顶元素
				template 
				T Stack::Peek (void) const
				{
				    // 如果栈空,程序终止
				    if (top == -1)
				    {
				        cerr 				        exit(1);
				    }
				    return stacklist[top];  //返回栈顶元素
				}
				
				
				// 测试是否栈空
				template 
				int Stack::StackEmpty(void) const
				{
				   return top == -1;  //如果栈空则返回TRUE,否则返回FALSE
				}
				
				// 测试是否栈满
				template 
				int Stack::StackFull(void) const
				{
				   return top == MaxStackSize-1;  //如果栈满则返回TRUE,否则返回FALSE 
				}
				
				// 清空栈
				template 
				void Stack::ClearStack(void) 
				{
				    top = -1;
				}
				
				#endif  // STACK_CLASS
							

相关资源