资源简介
利用栈求表达式的值,可供小学生作业,并能给出分数
代码片段和文件信息
#include
#include
#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define ERROR 0
#define OK 1
//定义表达式
typedef struct shiti
{
char a[20];
long result;
}xuanti;
typedef struct SqStack1
{ //建立数字栈
int *base;
int *top;
int stacksize;
}SqStack1;
typedef struct SqStack2
{
//建立运算符栈
char *base;
char *top;
int stacksize;
}SqStack2;
void WriteToFile(xuanti *pstuint num);
void ReadFromFile(xuanti *pstuint num);
void page_title(char *menu_item)
{//建立菜单
printf(“>>> 数学习题库 <<<\n\n- %s -\n\n“menu_item);
}
void return_confirm()
{
printf(“\n按任意键返回……\n“);
getch();
}
void IntInitStack(SqStack1 *S1)
{
S1->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S1->base)
exit(ERROR);
S1->top=S1->base;
S1->stacksize=STACK_INIT_SIZE;
}//IntInitStack
void CharInitStack(SqStack2 *S2)
{
S2->base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));
if(!S2->base)
exit(ERROR);
S2->top=S2->base;
S2->stacksize=STACK_INIT_SIZE;
}//CharInitStack
long IntGetTop(SqStack1 *S1)
{ //取栈顶元素
long e1;
if((*S1).top==(*S1).base)
return 0;
e1=*((*S1).top-1);
return e1;
}//IntGetTop
char CharGetTop(SqStack2 *S2)
{ //取栈顶元素
char e2;
if((*S2).top==(*S2).base)
return 0;
e2=*((*S2).top-1);
return e2;
}//IntGetTop
int IntPush(SqStack1 *S1int e1)
{//入栈
*(*S1).top++=e1;
return OK;
}//IntPush
int CharPush(SqStack2 *S2char e2)
{//入栈
*(*S2).top++=e2;
return OK;
}//CharPush
int IntPop(SqStack1 *S1)
{//出栈
int e1;
if((*S1).top==(*S1).base)
return 0;
e1=*--(*S1).top;
return e1;
}//IntPop
int CharPop(SqStack2 *S2)
{//出栈
char e2;
if((*S2).top==(*S2).base)
return 0;
e2=*--(*S2).top;
return e2;
}//CharPop
char Precede(char achar b)
{
int ij;
char Table[8][8]={ ‘ ‘‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘#‘
‘+‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
‘-‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
‘*‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
‘/‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
‘(‘‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘ ‘
‘)‘‘>‘‘>‘‘>‘‘>‘‘ ‘‘>‘‘>‘
‘#‘‘<‘‘<‘‘<‘‘<‘‘<‘‘ ‘‘=‘ };
//优先级表格
for(i=0;i<8;i++)
if(Table[0][i]==a) //纵坐标寻找
break;
for(j=0;j<8;j++) //横坐标寻找
if(Table[j][0]==b)
break;
return Table[j][i];
}//Precede
int Operate(int achar thetaint b)
{ //计算表达式值:主要是将大的表达式转化成小的表达式进行逐步求值
int c;
if(theta==‘+‘) c=a+b;
else if(theta==‘-‘) c=a-b;
else if(theta==‘*‘) c=a*b;
else c=a/b;
return c;
}//Operate
int IsOptr(char c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-07-04 16:07 数据结构课设\
文件 10463 2017-07-04 16:03 数据结构课设\Cpp1.cpp
文件 3377 2017-07-04 15:19 数据结构课设\Cpp1.dsp
文件 516 2017-07-04 16:07 数据结构课设\Cpp1.dsw
文件 41984 2017-07-04 16:07 数据结构课设\Cpp1.ncb
文件 48640 2017-07-04 16:07 数据结构课设\Cpp1.opt
文件 2730 2017-07-04 16:05 数据结构课设\Cpp1.plg
目录 0 2017-07-04 16:03 数据结构课设\Debug\
文件 217135 2017-07-04 15:52 数据结构课设\Debug\Cpp1.exe
文件 278948 2017-07-04 15:52 数据结构课设\Debug\Cpp1.ilk
文件 223132 2017-07-04 16:03 数据结构课设\Debug\Cpp1.pch
文件 582656 2017-07-04 15:52 数据结构课设\Debug\Cpp1.pdb
文件 33792 2017-07-04 16:05 数据结构课设\Debug\vc60.idb
文件 53248 2017-07-04 16:05 数据结构课设\Debug\vc60.pdb
文件 2 2017-07-04 16:03 数据结构课设\markrec.txt
文件 4 2017-07-04 15:55 数据结构课设\n_rec.txt
文件 0 2017-07-04 16:03 数据结构课设\shitiku.txt
- 上一篇:STM32 FATFS 移植好的全部源码
- 下一篇:论文写作公式居中编号右对齐模板
相关资源
- 微信小程序绿色学习考试题库测试d
- dnn_utils_v2lr_utilsplanar_utilstestCasestestC
- 超市订单管理系统基于springbootmybati
- 模板.zip
- new_ws.zip
- TWINCAT3.zip
- 2019最新padsVX2.4完整版安装包破解文件
- 两位按键控制一个数码管加减.zip
- 基于51单片机的无线病床呼叫系统设计
- 基于51单片机的花样流水灯(汇编程序
- INA226.zip
- 微信小程序由code获取openid和session_k
- distorm3-3.3.4.zip
- 复旦大学_软件安全_SEED labs_1-Buffer O
- vivado2018.3license.zip
- project1.0.zip
- Robomotion.zip
- 服务发现系统SkyDNS.zip
- WinBox v3.19.zip
- ADS通用台积电RF0.18umDesignkit.zip
- ios-swift 实现扫雷.zip
- ios-日历.zip
- js-仿QQ空间说说发表评论留言特效.z
- JSON-省市区街道四级联动插件.zip
- Screen To Gif 动画制作 0.8.zip
- ios-仿美团点餐列表界面.zip
- 百度地图类库 热力图.zip
- 原生js随机位置出现笑脸图片代码.z
- 聊天机器人Lita.zip
- ios-私人通讯录.zip
评论
共有 条评论