📄 sqstack.h
字号:
#include <stdlib.h>
#include "Status.h"
#define STACK_INIT_SIZE 100
typedef struct
{
char *base;
char *top;
}Stack_Char;
typedef struct
{
double *base;
double *top;
}Stack_Double;
//---------顺序栈的基本操作--------------
Status InitStack(Stack_Char &S)
{//初始化顺序栈
S.base = new char[STACK_INIT_SIZE];
if(!S.base) exit(-2);
S.top = S.base;
return OK;
}
Status InitStack(Stack_Double &S)
{//初始化顺序栈
S.base = new double[STACK_INIT_SIZE];
if(!S.base) exit(-2);
S.top = S.base;
return OK;
}
//////////////////////////////////////////////////////
Status DestroyStack(Stack_Char &S)
{//销毁顺序栈
if(S.base)
delete []S.base;
S.base = S.top = NULL;
return OK;
}
Status DestroyStack(Stack_Double &S)
{//销毁顺序栈
if(S.base)
delete []S.base;
S.base = S.top = NULL;
return OK;
}
///////////////////////////////////////////////////////
char GetTop(Stack_Char &S)
{//用e返回栈顶元素
// if(S.top == S.base) return ERROR;
char e;
e = *(S.top - 1);
return e;
}
double GetTop(Stack_Double &S)
{//用e返回栈顶元素
// if(S.top == S.base) return ERROR;
double e;
e = *(S.top - 1);
return e;
}
///////////////////////////////////////////////////////
Status Push(Stack_Char &S, char e)
{//将e压栈
if(S.top - S.base >= STACK_INIT_SIZE)
exit(-2);
*S.top++ = e;
return OK;
}
Status Push(Stack_Double &S, double e)
{//将e压栈
if(S.top - S.base >= STACK_INIT_SIZE)
exit(-2);
*S.top++ = e;
return OK;
}
//////////////////////////////////////////////////////////
Status Pop(Stack_Char &S, char &e)
{//出栈
if(S.top == S.base)
return ERROR;
e = *(--S.top);
return OK;
}
Status Pop(Stack_Double &S, double &e)
{//出栈
if(S.top == S.base)
return ERROR;
e = *(--S.top);
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -