my stack.h

来自「实现 stack或queue 的基本 ; 用 stack来实现 queue或」· C头文件 代码 · 共 71 行

H
71
字号
#ifndef _STACK_H
#define _STACK_H
#include <iostream>   
   
template <typename T> 
 class CMyStack
{
	T* elems;
	long index;
	long capacity;
public:
	CMyStack(){
		index = 0;
		capacity = 100;
		elems = new T[capacity];	
	}
	~CMyStack()
	{
		delete[] elems;
	}
	void Push(T const& );
	T& Pop();
	T& Top() const;
	bool IsEmpty() const {
		return (index==0);
	}
	void Empty(){
		index = 0;
	}
};
template <typename T> 
	void CMyStack<T>::Push(T const&  elem)
{
	if (index>=capacity)
	{
		capacity*=2;
		T* temp = new T[capacity];
		long i;
		for (i=0;i<capacity/2;i++)
		{
			temp[i]=elems[i];
		}
		delete[] elems;
		elems = temp;
	}
	elems[index++]=elem;

}
template <typename T> 
	T& CMyStack<T>::Pop()
{
	if(index == 0)
	{
		cout<<"ERROR: the stack is empty and cannot be pop!"<<endl;
		exit(0);
	}
	index--;
	return elems[index];
}
template <typename T> 
	T& CMyStack<T>::Top() const
{
	if(index == 0)
	{
		cout<<"ERROR: there is no element in the stack!"<<endl;
		exit(0);
	}
	return elems[index-1];
}

#endif

⌨️ 快捷键说明

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