2、利用栈栈和队列的特点点,设计一个程序使得它能够判断当前的表达式的括号使用是否匹配。

博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)当前位置: >>
设计算法判断一个算术表达式的圆括号是否配对
#include&stdio.h& #include&stdlib.h& typedef struct node{ node * }L Linkstack *Setstack(){ //创建空链栈 Linkstack *S; S=(Linkstack *)malloc(sizeof(Linkstack)); S-&next=NULL; return S; } Linkstack *Pushstack(Linkstack *S,char c){ //入栈 Linkstack *p; p=(Linkstack *)malloc(sizeof(Linkstack)); p-&ch=c; p-&next=S-& S-&next=p; return S; } Linkstack *Popstack(Linkstack *S){ //出栈 Linkstack *p; p=S-& S-&next=p-& free(p); return S; } char Gettop(Linkstack *S){ //取栈顶数据 if(S-&next!=NULL) return S-&next-& else return ' '; } int Judgepair( ){ //判断圆括号是否正确配对 Linkstack *p; int sign=1; p=Setstack(); printf(&请输入算术表达式,并以'#'结束!\n&); c=getchar(); while(c!='#'){ switch(c){ case'(': //扫描到'('入栈 p=Pushstack(p,c);
case')': //扫描到')',判断栈顶是否是'(' if(Gettop(p)=='(') //若栈顶是'(',则出栈 p=Popstack(p); else //若栈顶不是'(',则配对错误 sign=0; } if(sign==0) else c=getchar(); } if(p-&next!=NULL) //最后查看栈中是否为空 sign=0; } void Judgeout(int a){ //判断结果输出 if(a==1) printf(&算术表达式圆括号配对正确!\n&); if(a==0) printf(&算术表达式圆括号配对错误!\n&); } void main(){ Judgeout(Judgepair()); }
更多搜索:
赞助商链接
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。本站为教材在线阅读(在线教程)网站,所收录的教材电子版、电子教程、电子教材、在线教程,以及评论等均属用户个人行为,不代表本站立场。
Copyright & 2009-
Qacn.Net All Rights Reserved.
版权所有:
技术支持:Access denied | www.bkjia.com used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (www.bkjia.com) has banned your access based on your browser's signature (40d5ea3fe0c96e26-ua98).

我要回帖

更多关于 堆栈特点 的文章

 

随机推荐