stack.h

来自「用类实现的栈的结构。在VC++6里编译通过。希望对初学者有点帮助。高手就不用看了」· C头文件 代码 · 共 83 行

H
83
字号
#include <malloc.h>

#define STACK_INIT_SIZE 100				//设置栈的初始容量
#define	STACKINCREMENT 10				//设置如果栈满后应该再给多分配空间大小
typedef int selemtype;					//设置栈中元素类型

typedef struct							//栈结构
{	selemtype *base;
	selemtype *top;
	int stacksize;
}sqstack;

class hu								//堆栈类主体
{
private:
	sqstack s;
public:
	hu()								//构造函数
	{
		cout<<"这里是构造函数"<<endl;
	}
	int initstack()
	{	s.base=(selemtype *)malloc(STACK_INIT_SIZE*sizeof(selemtype));
		if(!s.base)
		{	cout<<"分配空间失败"<<endl;
			return 0;
		}
		s.top=s.base;
		s.stacksize=STACK_INIT_SIZE;
		return 1;
	}
	int push(selemtype e)				//入栈函数
	{	if(s.top-s.base>s.stacksize)
		{	s.base=(selemtype *)realloc(s.base,(s.stacksize+STACKINCREMENT*sizeof(selemtype)));
			if(!s.base)
			{	cout<<"分配空间失败"<<endl;
				return 0;
			}
			s.top=s.base+s.stacksize;
			s.stacksize+=STACKINCREMENT;
		}
		*s.top=e;
		s.top++;
		return 1;
	}
	int pop(selemtype &e)				//出栈函数
	{	if(s.top==s.base)
		{	cout<<"这是个空栈"<<endl;
			return 0;
		}
		s.top--;
		e=*s.top;
		return 1;
	}
	int gettop()						//返回栈顶元素函数
	{	selemtype e;
		if(s.top==s.base)
		{	cout<<"这是个空栈"<<endl;
			return 0;
		}
		e=*(s.top-1);
		return e;
	}
	int stacklength()					//返回栈大小函数
	{	selemtype *x;
		int i=0;	
		for(x=s.base;x<s.top;x++)
			i++;
		return i;
	}	
	int stackempty()					//返回栈是否为空的函数
	{	if(s.base==s.top)
			return 1;
		else
			return 0;
	}
	~hu()								//此类的析构函数
	{
		cout<<"这里是析构函数"<<endl;
	}
};

⌨️ 快捷键说明

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