📄 stack.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -