`

java栈实现括号匹配

    博客分类:
  • java
 
阅读更多

算法思想:

做一个空栈,读入字符。

若字符是左运算符,则入栈

若字符时右运算符,当栈为空时报错

                           否则,将栈顶元素弹出,若不匹配,则报错

最后,字符读完后,栈非空,则报错

 

代码:

Stack类

package cn.edu.tju.stack;

public class Stack {
	
	public static void push(char[] arr, int topOfStack, char x){
		
		arr[topOfStack] = x;
	}
	
	public static char pop(char[] arr, int topOfStack){
		char x = arr[topOfStack];
		return x;
	}

}

 客户端Client类

package cn.edu.tju.stack;

public class Client {

	public static void main(String[] args){
		char[] input = {'[', '(', ')', ']', '{', '(', '}', ')'};
		char[] stack = new char[input.length];
		
		int topOfStack = -1;
		boolean result = true;
		
		for(int i = 0; i < input.length; i ++){
			switch(input[i]){
			case '[':
			case '{':
			case '(':
				Stack.push(stack, ++topOfStack, input[i]);
				break;
			default:
				if(topOfStack == -1){
					result = false;
					break;
				}else{
					char top = Stack.pop(stack, topOfStack--);
					//if(input[i] != top){
					if((input[i] == ')' && top != '(') || (input[i] == ']' && top != '[') || (input[i] == '}' && top != '{')){
						result = false;
					}
					break;
				}
			}
		}
		if(topOfStack > -1){
			System.out.println("false");
		}else if(result){
			System.out.println("true");
		}else if(!result){
			System.out.println("false");
		}

	}
}
 
分享到:
评论

相关推荐

    括号匹配java源代码

    该程序使用栈数据结构来实现括号匹配的检测。 栈(Stack) 栈是一种_last in, first out_(后进先出)的数据结构。它可以用来实现括号匹配的检测。在本程序中,我们使用了一个名为`StackX`的栈类,该类提供了`push...

    java中用栈的思想实现字符串括号匹配

    栈在处理许多问题时特别有用,其中包括括号匹配。括号匹配是计算机科学中一个基础且关键的问题,主要用来检查一个字符串中的左右括号是否正确配对。例如,我们常见的括号有大括号`{}`、小括号`()`、中括号`[]`。 在...

    stack实现括号匹配

    这里的“stack实现括号匹配”是指利用栈这种数据结构来判断一个字符串中的左右括号是否正确配对。栈是一种后进先出(LIFO)的数据结构,非常适合用于解决此类问题。 首先,我们需要理解栈的基本操作:压入(push)...

    java-Editor.zip_java editor_括号匹配 的JAVA 实现

    本项目"java-Editor.zip"是一个基于Java实现的简易IDE,模仿了流行的notepad2编辑器,专注于核心的编辑功能,如代码高亮、括号匹配、书签管理、撤销/重做以及文本搜索。 首先,我们要讨论的是代码染色(Code ...

    (c语言)使用循环队列方式判断括号匹配

    本文将深入探讨如何使用C语言和数据结构中的循环队列来实现括号匹配的算法。 首先,我们需要了解什么是循环队列。循环队列是一种线性数据结构,它利用数组的“首尾相接”特性,模拟一个无限的队列。当队列的末尾被...

    Stack检测括号匹配.zip

    本教程将深入讲解如何利用Java中的Stack类来实现括号匹配算法。 首先,我们要理解栈的基本概念。栈是一种后进先出(LIFO)的数据结构,类似于图书馆的书架,新放上去的书籍(元素)只能最后取走。在Java中,`java....

    Java栈的应用之括号匹配算法实例分析

    通过以上分析和示例,我们可以看到Java栈的应用对于实现括号匹配算法来说是直观而高效的。由于栈的数据结构特性,算法简洁,执行效率高,易于理解和维护。此外,括号匹配算法不仅限于字符串验证,它在代码编辑器的...

    栈的应用 括号匹配,计算器,中缀表达式转换为后缀表达式

    在IT领域,栈的应用广泛且实用,特别是在处理括号匹配、计算器运算以及中缀表达式转后缀表达式的问题上。 1. **括号匹配**: 在编程语言中,括号(如圆括号"()"、方括号"[]"和大括号"{}")用于定义代码块或表达式...

    C语言实现表达式括号匹配算法及程序

    ### C语言实现表达式括号匹配算法解析 ... - 除了C++外,括号匹配算法也可以用其他编程语言实现,例如Python、Java等。 通过上述分析,我们可以深入了解如何利用栈解决括号匹配问题,并掌握其实现细节和扩展方向。

    数据结构与算法——堆栈实现括号匹配

    在这个实验中,我们将通过Java实现堆栈来解决括号匹配的问题。 首先,我们需要理解什么是括号匹配。在编程中,我们经常遇到诸如圆括号 `()`、方括号 `[]` 和大括号 `{}` 这样的配对符号。正确地匹配这些括号对于...

    Java语言编写的数据结构-栈实现

    栈在许多算法和问题解决中都有应用,例如括号匹配、深度优先搜索(DFS)、回溯法、表达式求值等。顺序栈和链栈各有优缺点:顺序栈在空间效率上更优,但插入和删除操作可能会涉及数组的扩容或缩容;而链栈则在插入和...

    java 栈和队列的小例子

    在提供的"栈和队列"压缩包文件中,可能包含了多个Java源代码文件,每个文件都是一个具体的栈或队列应用实例,例如实现括号匹配检查、迷宫路径查找等经典问题。通过分析和运行这些代码,你可以更直观地了解栈和队列在...

    数据结构的括号匹配问题代码

    数据结构的括号匹配问题是一个经典的计算机科学问题,主要涉及到字符串处理、递归算法和栈数据结构的应用。在编程领域,括号匹配通常用于检查一个字符串中的括号是否正确配对,例如在数学表达式、XML或JSON格式的...

    线性表,单链表,栈 java实现

    栈在编程中有着广泛的应用,如函数调用、表达式求值、括号匹配等。 Java中栈的实现可以使用`java.util.Stack`类,它是`Vector`类的子类,提供了`push()`, `pop()`, `peek()`等方法。 在给定的文件“王倩”中,很...

    括号匹配

    这个文件名“Kuohaopipei.java”可能是博主提供的一个Java类,用于实现括号匹配的算法。在Java中,我们可以定义一个名为“Kuohaopipei”的类,其中包含一个或多个方法,比如`isMatch`,用于判断输入的字符串中的括号...

    java实现的栈

    例如,在编译器中,词法分析器会使用栈来处理括号匹配;在解析表达式时,可以使用栈来评估后缀表达式(逆波兰表示法);在深度优先搜索(DFS)中,栈用于递归或迭代地遍历图或树的节点。这些实际应用加深了我们对栈...

    java实现顺序栈

    Java实现顺序栈是一种常见的数据结构操作,主要用于...顺序栈虽然简单,但在许多实际应用中都有广泛的应用,例如括号匹配、表达式求值、深度优先搜索等。理解并掌握顺序栈的原理和实现,对于提升编程能力非常有帮助。

    栈的java版演示栈的java版演示栈的java版演示

    1. **Java中的栈实现** Java标准库提供了`java.util.Stack`类来实现栈功能。这个类继承自`Vector`类,因此它包含了线程安全的增删查改操作。创建一个栈非常简单,只需如下代码: ```java Stack&lt;Integer&gt; stack = ...

    数据结构(Java语言描述) 案例07 括号匹配的检查.docx

    在本案例中,我们探讨了如何使用数据结构,特别是栈(Stack),来检查括号匹配的问题。这个案例属于计算机科学中的基础算法分析,涉及到编译原理和字符串处理。以下是详细的知识点解析: 1. **括号匹配**:括号匹配...

    栈实现编译器的语法匹配

    这个名为“语法匹配”的文件可能包含了具体的代码实现,比如用C++、Java或Python编写的一个简单的编译器前端,用于演示如何利用栈进行语法匹配。代码中可能有以下几个关键部分: 1. 定义栈的数据结构,可以是数组或...

Global site tag (gtag.js) - Google Analytics