队列与栈_栈结构的应用
来源:互联网 发布:unity3d navmeshagent 编辑:程序博客网 时间:2024/06/04 18:48
栈结构很有用处,有时通过它可以轻松化解一些难题。
看如下问题:
...(.[...)...]...(..(.)..)..{..}.[.]...[[...(.).]..].
请判断一个串中的括号是否匹配
注意下列不匹配的情况:
左括号太多
右括号太多
右括号先于左括号出现 ..)...(...
挎臂情况 ....[...(....]....)....
看如下问题:
...(.[...)...]...(..(.)..)..{..}.[.]...[[...(.).]..].
请判断一个串中的括号是否匹配
注意下列不匹配的情况:
左括号太多
右括号太多
右括号先于左括号出现 ..)...(...
挎臂情况 ....[...(....]....)....
考虑用栈
import java.util.ArrayDeque;import java.util.Deque;import java.util.Scanner;public class StackTest {public static void main(String[] args) {Deque<Character> stack = new ArrayDeque<Character>();Scanner sc = new Scanner(System.in);System.out.println("请输入一行表达式:");String str = sc.nextLine();boolean flag = true;char ch;for(int i = 0; i < str.length(); i++) {ch = str.charAt(i);if(ch == '(' || ch == '[' || ch == '{') {stack.offerFirst(ch);}else if(ch == ')') {if(stack.peekFirst() != null && stack.peekFirst() == '(') {stack.pollFirst();}else {flag = false;break;}}else if(ch == ']') {if(stack.peekFirst() != null && stack.peekFirst() == '[') {stack.pollFirst();}else {flag = false;break;}}else if(ch == '}') {if(stack.peekFirst() != null && stack.peekFirst() == '{') {stack.pollFirst();}else {flag = false;break;}}}if(flag) {flag = stack.isEmpty();}System.out.println("是否匹配:" + flag);}}结果:
Conclusion请输入一行表达式:a+b[ddd](2014)是否匹配:true请输入一行表达式:{[123]}9[))]是否匹配:false
0 0
- 队列与栈_栈结构的应用
- 数据结构_线性结构_栈与队列
- 数据结构_线性结构_栈与队列
- 栈与队列的应用
- C++_014_数据结构_队列和栈的STL应用
- 容器结构(栈与队列)
- 18_张孝祥_多线程_阻塞队列的应用
- 线性结构_队列
- 栈与队列(五)链队列(链式结构)
- 数据结构_实验3:队列的应用
- 7.6 栈与队列-栈的基本操作和应用
- 数据结构算法问题 栈与队列的应用
- 停车场管理(栈与队列的应用)
- 【数据结构】实验二:栈与队列的应用---表达式求值
- 链表、队列、栈的相关应用(一)链表的回文结构
- SDJZU_新生_栈和队列_愚人节的礼物
- 栈和队列的应用
- uva 11995 栈,队列,优先队列,等基本数据结构的应用与理解
- Ubuntu 12.04中文输入法的安装
- OJ_1012 畅通工程
- Win7+Ubuntu11.10(EasyBCD硬盘安装)
- 【完全背包】-HDU-2159-FATE
- JavaScript’s call v apply v bind
- 队列与栈_栈结构的应用
- 二叉排序树_求二叉树的高度
- JAVA内存管理
- 入门经典-训练指南5.1 图论基础例题
- filesystems / ramfs-rootfs-initramfs
- 存储过程语法及实例
- 通用菜单_完善功能
- How do I find out what version of Linux I'm running?
- OJ_1013