首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组E[n]中,‘#’为字符表达式的结束符。给出一个算法,用于判断表达式中括号(’(’和’)’)是否配对。要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++或Java语言描述算法
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组E[n]中,‘#’为字符表达式的结束符。给出一个算法,用于判断表达式中括号(’(’和’)’)是否配对。要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用C或C++或Java语言描述算法
admin
2017-01-04
52
问题
判断括号是否匹配是栈的主要应用之一。设字符表达式存储在数组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
学硕统考专业
相关试题推荐
评析郑和下西洋的历史条件和意义。
简述士族的源流和在西晋的发展过程。
下列对春秋时期各国称霸的顺序描述错误的选项是()
电子计算机的发展经过了四代,①电子数值积分计算机(ENIAC);②集成电路计算机;③大规模集成电路计算机;④晶体管计算机;⑤人工智能计算机,其先后顺序是()。
十六国时期的历史,可以划分为前后两个时期,其分界线是()。
晚清时期清帝年号的正确排序是()
十六国时期的历史,可以划分为前后两个时期,其分界线是()。
解放军渡江战役中横渡长江的东西两个攻击点是()。
凡尔赛体系是由一系列条约组成的,其中战胜国与匈牙利签订的条约为()。
随机试题
胎心监护仪出现以下图像,应诊断为胎儿窘迫:________、________。
哪条血管闭塞可引起延髓背外侧综合征
患者,男,30岁。发现颈前肿块3个月,诊断为“甲状腺瘤”,局部时有发胀,胸闷,有痰难咯,舌淡红苔薄白,脉弦。治疗应首选
A.金黄色葡萄球菌B.溶血性链球菌C.大肠杆菌D.铜绿假单胞菌E.变形杆菌大面积烧伤创面感染最常见的细菌
【2014年第11题】如图3-488所示两结构材质相同,在外力P作用下,下列相同项是:
建设项目的主要施工单位,应委派()参加工程施工安全领导小组。
对于有复验要求的合金钢元件还应该进行()等复验。
化简:.
正则明事务所的统计员小任需要对本所外汇报告的完成情况进行统计分析,并据此计算员工奖金。按照下列要求帮助小任完成相关的统计工作并对结果进行保存:在“完成情况”列的右侧增加“报告奖金”列,按照下列要求对每个报告的员工奖金数进行统计计算(以元为单位)。另外当
Theydiscussedtheproblemthreeorfourtimesandfinallycameto______.
最新回复
(
0
)