首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组E[n]中,’#’为字符表达式的结束符。给出一个算法,用于判断表达式中括号(’(’和’)’)是否配对。要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++或Ja
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组E[n]中,’#’为字符表达式的结束符。给出一个算法,用于判断表达式中括号(’(’和’)’)是否配对。要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++或Ja
admin
2018-08-12
69
问题
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组E[n]中,’#’为字符表达式的结束符。给出一个算法,用于判断表达式中括号(’(’和’)’)是否配对。要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。
选项
答案
(1)算法的基本思想:判断表达式中括号是否匹配,可通过栈,简单说是左括号时进栈,右括号时退栈。退栈时,若栈顶元素是左括号,则新读入的右括号与栈顶左括号就可消去。如此下去,输入表达式结束时,栈为空则正确,否则括号不匹配。 在读入表达式结束符‘#’时,栈中若只剩‘#’,表示括号全部配对成功;否则表示括号不匹配。另外,由于本题只是检查括号是否匹配,故对从表达式中读入的不是括号的那些字符,一律未作处理。因假设栈容量足够大,因此入栈时未判断溢出。 (2)算法的设计如下: int exyx(char E[],int n){ //判断表达式中圆括号是否匹配 char s[30], //s是一维数组,容量足够大,用作存放括号的栈 int top=0; //top用作栈顶指针 s[top_]=‘#’; //‘#’先入栈,用于和表达式结束符号‘#’匹配 int i=0; //字符数组E的工作指针 while(E[i]!=‘#’) //逐字符处理字符表达式的数组 switch(E[i]){ case‘(’:s[++top]=‘(’;i++;break; ease‘)’:if(s[top]:=‘(’){top一一;i++;break;} else{printf(”括号不配对”);exit(0);} ease‘#’:if(s[top]==‘#’){printf(“括号配对\n”);return(1);} else{printf(“括号不配对\n”);return(0);}//括号不配对 default:i++; //读入其他字符,不作处理 } }
解析
转载请注明原文地址:https://kaotiyun.com/show/d5Ri777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
1898年,与康有为共同倡议发起组织保国会的是()。
以下不是巴黎和会的主要议题的是()
北约和华约两个组织对峙近半个世纪,其影响是()。
文艺复兴运动兴起的时间是()。
在下列哪个条约中,最先出现了片面最惠国待遇()。
一组记录的关键字为{25,50,15,35,80,85,20,40,36,70),其中含有5个长度为2的有序表,用归并排序方法对该序列进行一趟归并后的结果是()。
A、1243B、4312C、2134D、3214D图的BFS遍历。D选项,首先访问结点3,与3邻接的结点4、2都未曾访问过,故3后面因该为2、4(或4、2),故D错。
已知散列函数为H(key)=key%11,处理冲突的方法为二次探测法,探测的序列为:1,-1,4,-4,…,j2,-j2(j<=m/2)。当di>0时,Hi=(H(key)+di)%m当di<0时,Hi=(H(key)+di+m)%m散列
如果互联的局域网高层分别采用TCP/IP协议与SPX/IPX协议,那么我们可以选择的多个网络互联设备应该是()。
设算术表达式由字符串b表示,其中可以包括三种括号:圆括号、方括号以及花括号,嵌套的顺序随意,如:“{[()]()}”。试编写算法,实现判定给定表达式中所含括号是否正确配对的出现。
随机试题
房地产产品的外部环境主要由()等构成。
[2005年,第45题]对于化学反应:Cl2+6NaOH=NaClO3+5NaCl+3H2O,下列评述中,Cl2在该反应中所起的作用的正确评述是()。
建设在居民区的某羽绒(毛)加工企业建设项目,按照现行相关法律法规之规定,可在( )阶段征求公众对该项目可能造成环境影响的意见。
非承重外墙是指在建筑物中起次要承重作用的外墙体,下列关于非承重外墙耐火极限的说法中,正确的是()。
下列关于内燃机排量的说法中,正确的是()。
有关基金资产的估值,下列说法不正确的是( )。
已知某风险组合的期望报酬率和标准差分别为10%和20%,无风险报酬率为5%,假设某投资者可以按无风险报酬率取得资金,将其自有资金100万元和借入资金50万元均投资于风险组合,则投资人总期望报酬率和总标准差分别为()。
在顺序表的动态存储定义中需要包含的数据成员是()。Ⅰ.数组指针*dataⅡ.表中元素个数nⅢ.表的大小maxSizeⅣ.数组基址base
端正人生态度应着力的方面有()
WhydidthegirlinviteUncleSmithtodinner?
最新回复
(
0
)