首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组E[n]中,‘#’为字符表达式的结束符。给出一个算法,用于判断表达式中括号(’(’和’)’)是否配对。要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++或Java语言描述算法
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组E[n]中,‘#’为字符表达式的结束符。给出一个算法,用于判断表达式中括号(’(’和’)’)是否配对。要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++或Java语言描述算法
admin
2017-01-04
61
问题
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组E[n]中,‘#’为字符表达式的结束符。给出一个算法,用于判断表达式中括号(’(’和’)’)是否配对。要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。
选项
答案
(1)算法的基本思想:判断表达式中括号是否匹配,可通过栈,简单说是左括号时进栈,右括号时退栈。退栈时,若栈顶元素是左括号,则新读入的右括号与栈顶左括号就可消去。如此下去,输入表达式结束时,栈为空则正确,否则括号不匹配。 在读入表达式结束符’#’时,栈中若只剩’#’.,表示括号全部配对成功:否则表示括号不匹配。另外,由于本题只是检查括号是否匹配,故对从表达式中读入的不是括号的那些字符,一律未作处理。因假设栈容量足够大,因此入栈时未判断溢出。 (2)算法的设计如下: int exyx(char E[],int n){ //判断表达式中圆括号是否匹配 char s[30]; /Is是一维数组,容量足够大,用作存放括号的栈 int top=0; //top用作栈顶指针 s[top]=’#’; //’#’先入栈,用于和表达式结束符号’#’匹配 int i=0; //字符数组E的工作指针 while(E[i]!=’#’) //逐字符处理字符表达式的数组 switch(E[i]){ case’(’:s[++top]=’(’:i++;break: case’)’:if(s[top]==’(’){top一一;i++;break:} else{printf(”括号不配对”);exit(0);} case’#’:if(s[top]==’#’){prinff(”括号配对\n”);return(1);} else{prinff(”括号不配对\n”);return(0);}//括号不配对 default:i++; //读入其他字符,不作处理 } }
解析
转载请注明原文地址:https://kaotiyun.com/show/sLRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
论述尼德兰革命的背景、主要过程及影响
近代自然科学产生的条件及其发展情况。
试述明治维新过程中土地改革的主要内容和意义。
春秋初年,首先利用“挟天子以令诸侯”的旗号发展自己势力的是()国。
在下列哪个条约中,最先出现了片面最惠国待遇?()
1217年,英格兰的《森林宪章》允许平民百姓在王室森林中放牧牲畜、挖掘水渠并从事其他农业活动。颁布该宪章的主要目的在于()
到1869年为止,人类已发现了多少种化学元素()。
给定页面请求序列RS=cadbebabcd,页框为4,起始为空,写出LRU页面置换过程。
为了在通用操作系统管理下的计算机上运行一个程序,需要经历几个步骤,但是,()不是一定需要。
随机试题
下列选项中属于中枢免疫器官的是
魏碑:仿宋:字体
下列选项中属于财产损失保险的有()。
建设工程材料设备采购合同的买受人即采购人是()。
累进税率可以有效地调节纳税人的收人、财产等,下列关于超额累进税率和全额累进税率的说法中正确的是()。
“只要产品质量好,就一定有销路”属于()观念。
人民警察的政治纪律是有关人民警察()方面的规范。
Theconceptionofpovertyandwhatto【C1】______aboutithavechangedoverthedecades.UnderSocialDarwinismthelazyandthe【C
NeitherBilly’smother______hisfatherknowsthewaytothevillage.
Overthelasttwoyears,inthePCbusinessMichaelDellhasbeenbeatenlikearentedmule.Hiscompanycontinuestolosemarke
最新回复
(
0
)