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

算法匹配括号

发布时间: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--;
}

}
}
阅读全文

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

热点内容
考研结合特征值计算法 浏览:514
操作系统算法综合题 浏览:150
华为程序员待遇 浏览:545
程序员带娃的图片 浏览:77
迷你云服务器怎么下载 浏览:813
福州溯源码即食燕窝 浏览:232
当乐服务器怎么样 浏览:713
nc编程软件下载 浏览:382
如何限制手机app的使用 浏览:307
安卓华为手机怎么恢复桌面图标 浏览:956
我的世界电脑版服务器地址在哪找 浏览:533
违抗了命令 浏览:256
安卓如何实现拖拽放置 浏览:91
净资产收益率选股指标源码 浏览:599
血压力传感器计算公式单片机 浏览:466
全网接口vip影视解析源码 浏览:916
如何破解服务器远程密码错误 浏览:377
平安深圳app如何实名认证 浏览:500
linux网络监控软件 浏览:889
内网服务器如何上传文件 浏览:140