设计算法判断一个算术表达式的圆括号是否配对.doc

设计算法判断一个算术表达式的圆括号是否配对.doc

ID:55626194

大小:649.50 KB

页数:3页

时间:2020-05-21

设计算法判断一个算术表达式的圆括号是否配对.doc_第1页
设计算法判断一个算术表达式的圆括号是否配对.doc_第2页
设计算法判断一个算术表达式的圆括号是否配对.doc_第3页
资源描述:

《设计算法判断一个算术表达式的圆括号是否配对.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、#include#includetypedefstructnode{charch;node*next;}Linkstack;Linkstack*Setstack(){//创建空链栈Linkstack*S;S=(Linkstack*)malloc(sizeof(Linkstack));S->next=NULL;returnS;}Linkstack*Pushstack(Linkstack*S,charc){//入栈Linkstack*p;p=(Linkstack*)malloc(sizeof(Linkstack));p->ch=c;p->

2、next=S->next;S->next=p;returnS;}Linkstack*Popstack(Linkstack*S){//出栈Linkstack*p;p=S->next;S->next=p->next;free(p);returnS;}charGettop(Linkstack*S){//取栈顶数据if(S->next!=NULL)returnS->next->ch;elsereturn'';}intJudgepair(){//判断圆括号是否正确配对Linkstack*p;charc;intsign=1;p=Setstack();printf("请输入算术表达式,

3、并以'#'结束!");c=getchar();while(c!='#'){switch(c){case'('://扫描到'('入栈p=Pushstack(p,c);break;case')'://扫描到')',判断栈顶是否是'('if(Gettop(p)=='(')//若栈顶是'(',则出栈p=Popstack(p);else//若栈顶不是'(',则配对错误sign=0;break;}if(sign==0)break;elsec=getchar();}if(p->next!=NULL)//最后查看栈中是否为空sign=0;returnsign;}voidJudgeou

4、t(inta){//判断结果输出if(a==1)printf("算术表达式圆括号配对正确!");if(a==0)printf("算术表达式圆括号配对错误!");}voidmain(){Judgeout(Judgepair());}实验题目:设计算法判断一个算术表达式的圆括号是否配对。问题分析:本程序要求实现判断一个算术表达式的圆括号配对是否正确,为满足上述功能,需要解决的关键问题是对左右括号的存储过程及判断配对正确与否过程。概要设计:①选择链栈对需要存储的字符进行存储。②扫描一个算术表达式进行时,遇到左括号时将其入栈。遇到右括号时,查看栈顶字符,若为左括号则继续扫

5、描,否则结束扫描。遇到其他字符时,不做任何操作,继续扫描。详细设计:①输入一个算术表达式后,sign置1,并依次逐个扫描表达式字符。当扫描遇到左括号时,将其存入链栈中。当扫描遇到右括号时,取链栈中栈顶字符查看,若栈顶字符不是左括号,sign置0,则结束扫描(即该表达式圆括号配对不正确);若栈顶字符是左括号,则将栈顶字符出栈,并继续扫描。当扫描遇到其他字符时,不做任何操作,继续下个字符扫描。②当扫描结束后,返回sign的值。sign为0时,即表达式圆括号配对错误。sign为1时,即表达式圆括号配对正确。调试分析及小结:错误:当输入((2+3)+(1+2)))#后,程序不能执

6、行。错误取栈顶函数代码:charGettop(Linkstack*S){//取栈顶数据returnS->next->ch;}错误分析:程序中对算术表达式扫描时,当扫描到右括号时,需要取字符链栈中栈顶字符进行查看,即需要调用取栈顶字符函数(该函数返回结点中的字符)。在扫描过两个左括号和右括号后,又扫描到右括号时,即需执行上述操作。而此时链栈为空,设计的函数(函数代码如上)在此情况下并不能返回一个字符,因此导致无法顺利执行程序。改正:当链栈为时,返回一个空格。代码如下:charGettop(Linkstack*S){//取栈顶数据if(S->next!=NULL)return

7、S->next->ch;elsereturn'';}小结:通过本次实验,意识到了标识符的重要性,恰当地设置标识符,可以减少许多不必要的运算,同时也提高了程序时间性能。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。