📄 function.c
字号:
#include<stdio.h>
#include<malloc.h>
#include"definition.h"
int InitStack(SqStack *S) //创建一个空栈
{
S->base=(int *)malloc( INIT_SIZE * sizeof(int) );
if(!S->base) //空间分配失败
return 1;
//空间分配成功
S->top=S->base;//置栈顶指针
S->stacksize=INIT_SIZE;//栈大小
return 0;
}
int GetTop(SqStack *S) //返回栈顶元素
{
if(S->base==S->top)//栈空,返回0
return 0;
return *(S->top - 1);//栈不空,返回栈顶元素
}
int Push(SqStack *S, int e) //插入栈顶
{
if( (unsigned)(S->top - S->base) >= S->stacksize){//栈满,追加存储空间
S->base=(int *)realloc(S->base, (S->stacksize+INCREMENT)*sizeof(int) );
if(!S->base)//分配失败,返回1
return 1;
//分配成功
S->top = S->base + S->stacksize;//置栈顶指针
S->stacksize += INCREMENT;//栈大小
}
*S->top++ = e; //接收输入后,S->top指向栈顶元素的下一个位置
return 0;
}
int Pop(SqStack *S) //删除栈顶元素
{
if(S->base == S->top)//空栈,返回0
return 0;
return *( --(S->top) );//不空,栈顶指针下移(即删除栈顶元素),并且返回栈顶元素
}
int Chk(int e)//检查输入合法性
{
if( e<'0' || e>'9'){
switch(e){
case '(': case ')': case '+': case '-': case '*': case '/': case '\n':
return 2;
default:
return 0;
}
}
return 1;
}
int Precede(int top, int e)//判断符号优先级
{
switch(top){
case '+': case '-':
if(e=='+' || e=='-' || e==')' || e=='\n' )
return 1;
return -1;
case '*': case '/':
if(e=='(')
return -1;
return 1;
case '(':
if(e==')')
return 0;
if(e=='\n')
return 2;
return -1;
case ')':
if(e=='(')
return 2;
return 1;
case 0:
if(e=='\n')
return 0;
if(e==')')
return 2;
return -1;
default:
return 2;
}
}
int Operate( int a, int op, int b)//进行运算
{
switch(op){
case '+':
return a+b;
case '-':
return a-b;
case '*':
return a*b;
case '/':
return a/b;
default:
return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -