`
haoran_10
  • 浏览: 443255 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 栈类的用法

    博客分类:
  • java
阅读更多

数据结构中的栈,在解决很多问题都有用处,比如括号匹配,迷宫求解,表达式求值等等

java中有封装好的类,可以直接调用:

 

Stack:

 

1-->public Stack()创建一个空堆栈

 

2-->public boolean empty()测试堆栈是否为空;

 

3-->public E pop()移除堆栈顶部的对象,并作为此函数的值返回该对象。 

 

4-->public E push(E item)把项压入堆栈顶部

 

5-->public E peek()查看堆栈顶部的对象,但不从堆栈中移除它。 

 

6-->public boolean empty()测试堆栈是否为空

 

结合一道题目:

 

括号配对问题

描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes

 

 

代码:

import java.util.Scanner;
import java.util.Stack;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		String s;
		for (int i = 0; i < N; i++) {
			s = scan.next();
			if (isMatch(s)) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}
		}
	}
	private static boolean isMatch(String s) {
		Stack<Character> sk = new Stack<Character>();
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) == '(') {
				sk.push('(');
			}
			if (s.charAt(i) == ')') {
				if (!sk.isEmpty() && sk.pop() == '(')
					continue;
				else
					return false;
			}
			if (s.charAt(i) == '[') {
				sk.push('[');
			}
			if (s.charAt(i) == ']') {
				if (!sk.isEmpty() && sk.pop() == '[')
					continue;
				else
					return false;
			}
		}
		if (sk.isEmpty())
			return true;
		else
			return false;
	}
}        
 

 


5
0
分享到:
评论

相关推荐

    java 栈的实现和应用

    Java栈是一种基于后进先出(LIFO)原则的数据结构,它在计算机科学和编程中具有广泛的应用。本文将深入探讨Java中栈的实现以及其在实际应用中的使用。 首先,我们来理解栈的基本概念。栈是一种特殊类型的线性数据...

    关于Java栈与堆的思考

    关于Java栈与堆的深入解析 Java作为一种广泛使用的编程语言,其内存管理机制是学习者必须掌握的核心概念之一。在Java中,栈(Stack)与堆(Heap)是用于存储数据的主要区域,它们各自承担着不同的职责,对于理解...

    用java实现的栈Stack类

    用java实现的栈Stack类,不继承任何集合类,用对象数组实现

    java中LinkedList集合类实现栈和队列.doc

    在Java中,我们可以利用LinkedList的addFirst()方法来模拟压栈操作,将新元素添加到链表头部,使用removeFirst()方法来模拟弹栈操作,删除并返回链表头部的元素。以下是一个简单的栈实现: ```java public class ...

    详解java堆和栈

    Java中的栈主要用于存储线程级别的数据,例如局部变量、方法调用参数等。每当一个方法被调用时,就会在栈上创建一个新的栈帧来存放该方法的信息。当方法执行完毕后,这个栈帧也会随之销毁。 ##### 特点: 1. **生命...

    区别Java中堆与栈区别Java中堆与栈

    Java 中堆与栈的区别 Java 中的堆和栈是两个不同的内存区域,分别用于存放不同类型的数据。堆是一个运行时数据区,类的对象从中分配空间,通过new、newarray、anewarray 和 multianewarray 等指令建立,垃圾回收器...

    Java用栈实现的计算器

    Java提供了`java.util.Stack`类来实现栈。它继承自`Vector`类,因此提供了丰富的线程安全的方法,如`push()`, `pop()`, `peek()`等。在这个计算器项目中,我们可以创建一个栈对象来存储数字和运算符。 3. **表达式...

    慢慢的回味.entry_point–JVM Java栈桢的创建1

    JVM Java栈桢的创建 Java虚拟机(JVM)是Java语言的运行环境,它负责将Java字节码转换为机器码并执行。在JVM中,栈桢的创建是Java程序执行的基础。本文将对JVM Java栈桢的创建进行详细的分析。 一、栈桢的概念 在...

    java使用栈进行压栈和弹出操作

    在Java编程语言中,栈是一种基于“后进先出”(LIFO)原则的数据结构,常用于实现递归、表达式求值、内存管理等多种功能。...在本例中,通过压入和弹出大量数据并测量耗时,我们可以评估Java栈操作的性能。

    Java中堆内存与栈内存分配浅析

    程序运行时所使用的内存主要分为两类:堆内存(Heap Memory)和栈内存(Stack Memory)。理解这两种内存类型的工作原理及其区别对于优化程序性能、避免内存泄漏等问题至关重要。本文将深入探讨Java中堆内存与栈内存...

    线性链表,栈(java版)代码

    "线性链表,栈(java版)代码"这个标题暗示了提供的代码可能包括线性链表和栈的Java实现,尤其是使用这些数据结构进行实际操作,如在main方法中可能有对链表和栈的操作演示。描述中的“最新”和“简单,易懂”意味着...

    MiGong.rar_java 栈_migong_动态迷宫_栈 java

    Java提供了一些内置的数据结构类,如`java.util.Stack`,它基于`Vector`类实现,提供了栈的基本操作。然而,为了优化性能,开发者可能会选择使用`ArrayList`或`LinkedList`来手动实现栈,因为它们提供了更快的插入和...

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

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

    Java堆和栈的区别

    "Java 堆和栈的区别" Java 堆和栈是 Java 中的两种内存管理机制,它们都是 Java 用来在 RAM 中存放数据的地方。但是,它们有很多不同之处。 Java 堆是一个运行时数据区,类的对象从中分配空间。这些对象通过 new、...

    Java定义栈结构,并实现入栈、出栈操作完整示例

    在本文的示例代码中,使用了 ArrayList 的 add 方法将元素添加到栈中。 三、出栈操作 出栈操作是将栈顶元素取出的过程。在本文的示例代码中,使用了 ArrayList 的 get 和 remove 方法将栈顶元素取出。 四、栈是否...

    java作业 类设计 实现栈的基本结构 小型计算器

    - **栈类(Stack)**:定义一个名为Stack的类,包含私有变量存储栈元素,以及公共方法实现上述栈操作。 - **数据类型**:决定栈是否只接受特定类型(如整数、字符或自定义对象)或支持多种类型(使用Object作为...

    Java基础技术栈图解大全-xmind源文件

    1. **Java编程语法**:Java语言以其严谨的语法著称,包括变量声明、常量定义、运算符、控制流(如if语句、for循环、while循环)以及方法定义等。理解这些基础知识是编写任何Java程序的前提。 2. **面向对象编程...

    Java中的堆和栈

    这些对象可以是任何Java类的实例,也可以是数组。 ##### 特点 - **动态分配**:堆内存允许动态分配空间,即在程序运行过程中可以根据需要分配不同大小的空间。 - **自动垃圾回收**:堆内存中的对象由Java虚拟机的...

    Java 中的堆和栈.doc

    String类是Java中的一个特殊类,它代表不可变的字符序列。当我们用`String str = "abc"`创建一个字符串时,如果栈中已有"abc",那么只会创建一个引用,否则会将"abc"存入栈中并创建引用。而`String str = new String...

    java集合类详解(set list ArrayList等java集合类详述)

    Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。...了解集合类的特点和用法可以帮助我们更好地编写代码。

Global site tag (gtag.js) - Google Analytics