导航:首页 > 源码编译 > 算法匹配括号

算法匹配括号

发布时间:2022-07-23 11:48:05

A. 数据结构 括号匹配算法

楼上说的是一个原因,不过去掉!StackEmpty(S)后问题依旧。
你的原因主要是这里:
case ')':{Pop(S,e);
if(e!='(') flag=1; break;}

应该先判断,再出栈。不能先出栈再判断。

B. 数据结构栈应用括号匹配算法

算法如下:

从左开始向右扫描该表达式,
1、如遇左括号(不论哪一种),将该左括号入栈;
2、如是右括号,如栈为空则返回出错信息,不空就检查其是否与栈顶左括号是否配对,如是则栈顶元素出栈后继续扫描(转1 ),否则,返回出错信息(出错类型:右括号先出现,或左右括号不匹配,出错位置);
3、如是其它字符,直接跳过,继续扫描,如表达式未完则转1;表达式结束转4。
4、如栈空,显示“匹配正确!”,否则显示“缺失右括号!”。

C. 如何用两种括号()和[]设计一个算法判断一个算数表达式中的括号是否匹配

include "seqstack1.h"

include "stdio.h"

void BracketMatch(char str);

void BracketMatch(char str) /*str[]中为输入的字符串,利用堆栈技术来检查该字符串中的括号是否匹配

D. 数据结构括号匹配的思想

匹配思想:从左至右扫描一个字符串(或表达式),则每个右括号将与最近遇到的那个左括号相匹配。则可以在从左至右扫描过程中把所遇到的左括号存放到堆栈中。每当遇到一个右括号时,就将它与栈顶的左括号(如果存在)相匹配,同时从栈顶删除该左括号。
算法思想:设置一个栈,当读到左括号时,左括号进栈。当读到右括号时,则从栈中弹出一个元素,与读到的左括号进行匹配,若匹配成功,继续读入;否则匹配失败,返回FLASE。

E. 数据结构括号匹配的算法问题

return0 就是不匹配,return 1 就是匹配,最后判断栈是不是空的,栈如果是空的,说明匹配了,返回 1 ,如果不是空的,说明还有左括号,匹配失败

F. 括号匹配 基本算法

用栈的数据结构

先读入一个括号,如果为左括号,入栈,否则,出错退出
继续读入括号,如果是右括号,检查栈,如果非空,出栈(因为不把右括号入栈,所以栈里面都是左括号),如果空,出错退出

直到读完处理完最后一个括号,如果这个时候栈为空,那么成功返回true,否则返回false

G. 编写算法判断表达式中的方括号和圆括号是否匹配

给出思路:
一个字符数组str1用来放目标字符串;
另一个字符数组str2用来放左括号,
遍历str1,
发现左括号,就放入str2中,类似于入栈;
发现右括号就进行判定
如果str2已空,不匹配,直接return
0;
如果当前右括号类型所对应的左括号不等于str2中最末位的左括号;return
0;
如果当前右括号类型所对应的左括号类型等于str2中最末位的左括号,把str2末尾去掉一个左括号;
直到str1末,进行判定:
如果str2长度为零,那就是完全匹配,否则return
0。

H. 设计一个算法检查括号是否匹配(写出算法设计思想即可)

用栈
每个元素一次和栈顶元素比较
如果栈空,进栈
如果和栈顶匹配,栈顶出栈
不匹配 进栈
最后如果栈空 括号匹配 栈不空 不匹配

I. java 栈 如何实现括号匹配

java栈实现括号匹配,主要是使用栈队列算法,如下代码:

importjava.util.Scanner;
importjava.util.Stack;

/**
*@authorOwner
*
*/
publicclassMain{

publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);

intn=sc.nextInt();//3条测试数据数据

Stack<Character>stack=null;

while(n!=0){

//从控制台读入一个测试字符串[]()[(])
Stringstr=sc.next();
//如果该输入字符串为奇数,说明不匹配
if(str.length()%2==1){
System.out.println("No");
}else{
//说明字符是偶数
stack=newStack<Character>();

//遍历第一条测试字符串[]()[(])
for(inti=0;i<str.length();i++){
if(stack.isEmpty()){
//如果栈是空的
stack.push(str.charAt(i));
}elseif(stack.peek()=='['&&str.charAt(i)==']'||stack.peek()=='('&&str.charAt(i)==')'){
//说明此时栈中字符不是空的,并且符合,
stack.pop();
}else{

stack.push(str.charAt(i));
}
}

if(stack.isEmpty()){
//如果栈是空的,说明括号匹配
System.out.println("Yes");
}else{
//说明栈不为空,括号不匹配
System.out.println("No");
}
}

n--;
}

}
}
阅读全文

与算法匹配括号相关的资料

热点内容
仙侣情缘网页版新服务器地址 浏览:761
免费服务器怎么加模拟 浏览:690
你好邻居安卓12怎么下载手机版 浏览:875
java加密与解密的艺术pdf 浏览:182
守家管家应用加密密保答案 浏览:143
androidsocket通信原理 浏览:539
乡镇汇报材料在哪个app 浏览:261
linux下bin文件 浏览:491
如何玩转顺丰app 浏览:659
解压球的正确方法 浏览:197
python开发的程序运行速度 浏览:506
基于单片机的pcf8591 浏览:798
暑假python培训班在哪 浏览:523
见顶之红选股器源码公式 浏览:236
逻辑加密卡怎么样 浏览:281
下载和解压有先后顺序吗 浏览:542
svn教程linux 浏览:735
同花顺app股票账户怎么绑定银行卡 浏览:507
用python爬豆瓣数据 浏览:725
androidedittext长度限制 浏览:264