sqstack.h
来自「用栈实现中缀表达式求值的问题。同时实现了逆波兰表达式的问题。」· C头文件 代码 · 共 125 行
H
125 行
#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 + =
减小字号Ctrl + -
显示快捷键?