stack.h

来自「本系统所完成功能如下: &#61548 即时消息:用户之间发送即时消息。 」· C头文件 代码 · 共 113 行

H
113
字号
#ifndef _STACK_H_
#define _STACK_H_  

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <stdio.h>
#include "stdlib.h"
#include "conio.h"
#include <iostream.h>

const int MaxStackSize = 50;
template<class T>
class Stack
   {	private:
		  T stacklist[MaxStackSize];
		  int top;
		public:
		  Stack(void);
		  void Push(const T& item);
		  T Pop(void);
	      void ClearStack(void);
		  T Peek(void);//const;
		  int StackEmpty(void) const;
		  int StackFull(void) const;
		  void InitailStack();
		  void PrintStack();
	}; 

//顺序栈的类实现
   // 构造函数 ∥初始化top
template<class T>
Stack<T>::Stack(void):top(-1)
		{  }

//清空栈
template<class T>
void Stack<T>::ClearStack()
{
	top=-1;
}


// 向栈顶压入一个元素
template<class T>
void Stack<T>::Push(const T& item)
	{
	if(top==MaxStackSize-1)
	 {
	cerr<<"Stack overflow!"<<endl;
	exit(1);
	 }
	top++;
    stacklist[top] = item;
  }


//从栈顶弹出一个元素		 		
template<class T>
T Stack<T>::Pop(void)
	 { T temp;
	   if(top == -1)
		{ 
		   cerr<<"Attempt to pop an empty stack!"<<endl;
		  exit(1);
		 }
		 temp=stacklist[top]; top--;
			return temp;
	    }

	 
//	读栈顶元素
		template<class T>
T Stack<T>::Peek(void)
	 { if(top==-1)
		{  cerr<<"Attempt to peek an empty stack!"<<endl;
		  exit(1);
		} 	
       return stacklist[top];
	  }


// 测试栈是否为空
		template<class T>
int Stack<T>::StackEmpty(void) const
		{	return top==-1;
		}

		
//测试栈是否为满
		template<class T>
int Stack<T>::StackFull(void) const
		{	return top == MaxStackSize-1;	}


//初始化栈
template<class T>
void Stack<T>::InitailStack()
{
	T item;
	while(cin>>item&&item!=0)
	 Push(item);
}


//输出栈的所有元素
template<class T>
void Stack<T>::PrintStack()
{
	for(int i=0;i<=top;i++)cout<<stacklist[i]<<" ";
}
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?