📄 stack.cpp
字号:
//stack.c
#include "stdafx.h"
#include "global.h"
int InitStack(intstack &S)
{
S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize =STACK_INIT_SIZE;
return OK;
}//InitStack
bool Empty(intstack &S)
{
return(S.base==S.top);
}
int GetTop(intstack S)
{
int e;
if(S.top==S.base)return ERROR;
e=*(S.top-1);
return e;
}//GetTop
int Push(intstack&S,int e)
{
if(S.top-S.base>=S.stacksize){
S.base=(int *)realloc(S.base,(S.stacksize +STACKINCREMENT)*sizeof(int));
if(!S.base )exit(OVERFLOW);
S.top=S.base+S.stacksize ;
S.stacksize +=STACKINCREMENT;
}
*S.top ++=e;
return OK;
}//Push
int Pop(intstack&S,int&e)
{
if(S.top ==S.base )return ERROR;
e=*--S.top;
return OK;
}//Pop
int Operate(int a,char theta,int b)
{
switch(theta)
{
case '+':return(a+b);break;
case '-':return(a-b);break;
case '*':return(a*b);break;
case '/':
{
if (b!=0) return(a/b);
else
{
error2("can not divide 0");
return NULL;
}
break;
}
case '@':return(a%b);break;
default:
{
exit(0);
}
}
}//Operate
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -