毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

数据结构课程设计-用静态栈数据结构实现表达式求值

更新时间:2007-10-20:  来源:毕业论文
数据结构课程设计-用静态栈数据结构实现表达式求值 

一.    课题意义:当用户输入一个合法的表达式后,能够返回正确的结果。能够计算的运算符包括:加、减、乘、除、括号;能够计算的数要求在实数范围内。对于异常表达式给出错误提示。

二.软件需求:数据对象:D={ ai |ai∈ElemSet,i=1,2,3,……,n,n≥0}

数据关系:R={<ai-1,ai,)>| ai-1,ai ∈D, i=2,3,……,n}约定a1为栈底,an 为栈顶。基本操作:Push(&s,e)

       初始条件:栈s已经存在。

操作结果:插入元素e为新的栈顶元素

Pop(&s,&e)

       初始条件:栈s已经存在且非空。

       操作结果:删除s的栈顶元素,并用e返回其值

二.    系统设计:

流程图:

开始

readnextch算法

factor算法

建立栈

存放操作字符

存放数据

expression算法

计算

结束

三.    重点模块详细设计:

    主要算法:(伪代码)

#define N 50

#define OK 1

#define ERROR 0

#include <ctype.h>

#include <string.h>

typedef struct{

    int top;

    double array[N];

}NumStack;

typedef struct{

    int top;

    char array[N];

}OpStack;

//把字符转换为相应的整数的函数

int Cint(char mychar){

    return (mychar-48);

}

//数字进栈的函数

status PushNum(NumStack &numstack,double num){

    if(numstack.top<N)

{numstack.top++;

     numstack.array[numstack.top-1]=num;

     return OK;

}

else return ERROR;

}

//数字出栈的函数

status PopNum(NumStack &numstack,double &num){

    if(numstack.top>0){

num=numstack.array[numstack.top-1];

    numstack.top--;

    return OK;

}

else return ERROR;

 

}

//操作符进栈的函数

status PushOp(OpStack &opstack,char &op){

    if(opstack.top<N){

opstack.top++;

    opstack.array[opstack.top-1]=op;

    return OK;

}

else return ERROR;

}

//操作符出栈的函数

status PopOp(OpStack &opstack,char &op){

if(opstack.top>0){ 

op=opstack.array[opstack.top-1];

    opstack.top--;

return OK;

}

else return ERROR;

}

//进行运算的函数

double Calc(double a,double b,char c){

    double result;

[1] [2] 下一页

数据结构课程设计-用静态栈数据结构实现表达式求值下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。