资源简介
数据结构表达式求值,c语言版,能计算多位数,下载后可以直接运行,注释明确

代码片段和文件信息
#include
#include
#include
//操作数栈的定义及操作
#define max 1000
typedef struct
{
double data[max];
int top;
}SeqStack*PseqStack;
//初始化一个空栈
PseqStack Init_Stack(void)
{
PseqStack s;
s=(PseqStack)malloc(sizeof(SeqStack));
if(s)
s->top=-1;
return s;
}
//判断栈是否为空
int Empty_Stack(PseqStack s)
{
if(s->top==-1)
return 1;
else
return 0;
}
//元素入栈
int Push_Stack(PseqStack sdouble x)
{
if(s->top==max-1)
{
printf(“栈满,不能入栈!\n“);
return 0; //栈满不能入栈
}
else
{
s->top++;
s->data[s->top]=x;
return 1;
}
}
//元素出栈
int Pop_Stack(PseqStack sdouble *x)
{
if(Empty_Stack(s))
{
printf(“栈空,无元素出栈!\n“);
return 0;
}
else
{
*x=s->data[s->top];
s->top--;
return 1;
}
}
//取栈顶元素
int Get_Stack(PseqStack sdouble *x)
{
if(Empty_Stack(s))
{
printf(“栈空!\n“);
return 0;
}
else
{
*x=s->data[s->top];
return 1;
}
}
//销毁栈
void Destory_Stack(PseqStack *s)
{
if(*s)
free(*s);
*s=NULL;
}
#define M 100
//操作符栈的定义及操作
typedef struct
{
char data[M];
int top;
}seqstack*pseqstack;
pseqstack Init_stack()
{
pseqstack s;
s=(pseqstack)malloc(sizeof(seqstack));
if(s)
s->top=-1;
return s;
}
//判断栈空
int Empty_stack(pseqstack s)
{
if(s->top==-1)
return 1;
else
return 0;
}
//入栈
int Push_stack(pseqstack schar x)
{
if(s->top==M-1)
{
printf(“栈满!“);
return 0;
}
else
{
s->top++;
s->data[s->top]=x;
return 1;
}
}
//元素出栈
int Pop_stack(pseqstack schar *x)
{
if(Empty_stack(s))
{
return 0;
}
else
{
*x=s->data[s->top];
s->top--;
return 1;
}
}
//获取栈顶元素
int Gettop_stack(pseqstack schar *x)
{
if(Empty_stack(s))
{
return 0;
}
else
{
*x=s->data[s->top];
return 1;
}
}
//销毁栈
void Destory_stack(pseqstack *s)
{
if(*s)
free(*s);
*s=NULL;
return ;
}
//判断读入的字符是否是数字
int IsNum(char c)
{
if(c>=‘0‘&&c<=‘9‘)
return 1;
else
return 0;
}
//返回运算符优先级
int Priority(char op)
{
switch(op)
{
case‘=‘:return 1;
case‘)‘:return 2;
case‘+‘:
case‘-‘:return 3;
case‘*‘:
case‘/‘:return 4;
case‘(‘:return 5;
default:return 0;
}
}
//对中缀表达式直接求值
double Infix_exp_value(char *infixexp)
{
PseqStack s1; //操作数
pseqstack s2; //操作符
char wtopelementch;
double abcsumresult;
s1=Init_Stack();
s2=Init_stack();
if(!s1||!s2)
{
printf(“ to initialize a stack is false!“);
return 0;
}
Push_stack(s2‘=‘);
w=*infixexp;
while((Gettop_stack(s2&ch)ch)!=‘=‘||w!=‘=‘) //取栈顶元素,判断是否是数字
{
if(IsNum(w)) //对数字处理
{
sum=0;
sum=w-‘0‘;
infixexp++;
w=*infixexp;
while(IsNum(w))
{
sum=sum*10+(w-‘0‘);
infixexp++;
w=*infixexp;
}
Push_Stack(s1sum);
}
else //对运算符的处理
{
if(Priority((Gettop_stack(s2&ch)ch))>Priority(w)&&(Gettop_stack(s2&ch)ch)!=‘
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 192613 2013-05-30 21:16 infixexp_value_wei\Debug\infixexp_value_wei.exe
文件 201664 2013-05-30 21:16 infixexp_value_wei\Debug\infixexp_value_wei.ilk
文件 16229 2013-05-30 21:16 infixexp_value_wei\Debug\infixexp_value_wei.obj
文件 225888 2012-06-06 19:56 infixexp_value_wei\Debug\infixexp_value_wei.pch
文件 476160 2012-06-18 09:42 infixexp_value_wei\Debug\infixexp_value_wei.pdb
文件 41984 2013-05-30 21:17 infixexp_value_wei\Debug\vc60.idb
文件 53248 2012-06-18 09:42 infixexp_value_wei\Debug\vc60.pdb
文件 4528 2012-06-18 09:42 infixexp_value_wei\infixexp_value_wei.cpp
文件 4428 2012-03-28 13:49 infixexp_value_wei\infixexp_value_wei.dsp
文件 561 2012-03-28 12:28 infixexp_value_wei\infixexp_value_wei.dsw
文件 41984 2013-05-30 21:17 infixexp_value_wei\infixexp_value_wei.ncb
文件 48640 2013-05-30 21:17 infixexp_value_wei\infixexp_value_wei.opt
文件 955 2013-05-30 21:16 infixexp_value_wei\infixexp_value_wei.plg
目录 0 2013-08-01 11:31 infixexp_value_wei\Debug
目录 0 2013-08-01 11:31 infixexp_value_wei
----------- --------- ---------- ----- ----
1308882 15
- 上一篇:编译原理firstselectfollow实验源代码
- 下一篇:MFC_酒店管理系统
相关资源
- C语言课程设计
- 利用C++哈希表的方法实现电话号码查
- c语言电子商务系统
- 学校超市选址问题(数据结构C语言版
- 数据结构,迷宫问题C语言版源代码
- DSDEMO-C演示(数据结构C语言版 严蔚敏
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 实验报告:数据结构长整数四则运算
- 宠物管理系统课程设计(源码+数据库
- 数据结构教程李春葆第五版书中例题
- c语言课程设计:客房登记系统源码
- 吕鑫vc6c++数据结构视频源码
- 数据结构教程李春葆第五版课后答案
- 算法表达式求值.cpp
- 李春葆课后习题答案(数据结构教材
- 8位竞赛抢答器的课程设计报告.docx
- 数据结构1800题 题+答案(全)
- 数据结构(C语言版)ppt课件,清华,
- c++常用游戏算法及数据结构设计
- 数据结构超全面复习导图
- VC++MFC课程设计的学生成绩管理系统
- 《Data Structures and Algorithm Analysis in C
- 数据结构C语言版教学笔记严蔚敏
- C++实现21点游戏
- c++课程设计学生管理系统浙工大源码
- 数据结构C语言版期末考试试题(有答
- 多功能计算器实现C++代码以及代码详
- C语言数据结构银行客户排队
- C语言实现栈操作
评论
共有 条评论