下面的代码是栈的使用的简单例子,以及栈的两个应用:字符串倒置,判断括号是否匹配。
import java.util.Stack;
public class StackTest
{
private static Stack<String> stack = new Stack<String>();
public static void main(String[] args)
{
String[] str = new String[]{"ab", "cd", "ef", "gh"};
Reverse(str);
String word = "abcdefg";
Reverse(word);
String match = "a{B[cf(ds)kf]s}sd";
isMatch(match);
}
public static void Reverse(String[] str)
{
System.out.print("Before reverse: ");
for(int i=0; i<str.length; i++)
System.out.print(str[i] + " ");
for(int i=0; i<str.length; i++)
stack.push(str[i]);
System.out.println();
System.out.print("After reverse: ");
while(!stack.isEmpty())
System.out.print(stack.pop() + " ");
System.out.println();
}
public static void Reverse(String str)
{
System.out.print("Before reverse: ");
System.out.print(str);
for(int i=0; i<str.length(); i++)
stack.push(String.valueOf(str.charAt(i)));
System.out.println();
System.out.print("After reverse: ");
while(!stack.isEmpty())
System.out.print(stack.pop());
System.out.println();
}
public static void isMatch(String str)
{
char ch;
String temp;
String top;
boolean flag = true;
for(int i=0; i<str.length(); i++)
{
ch = str.charAt(i);
temp = String.valueOf(ch);
if(temp.equals("{") || temp.equals("[") || temp.equals("("))
stack.push(String.valueOf(ch));
else if(temp.equals("}") || temp.equals("]") || temp.equals(")"))
{
if(stack.isEmpty())
{
flag = false;
System.out.println("Not match !");
break;
}
else
{
top = stack.pop();
if((top.equals("{") && !temp.equals("}")) || (top.equals("[") && !temp.equals("]")) || (top.equals("(") && !temp.equals(")")))
{
stack.push(top);
System.out.println("Not match !");
break;
}
}
}
}
if(stack.isEmpty() && flag)
System.out.println("Match!");
}
}
/**
* 输出如下:
* Before reverse: ab cd ef gh
After reverse: gh ef cd ab
Before reverse: abcdefg
After reverse: gfedcba
Match!
*/
下面的代码是队列的简单使用。
public class QueueTest
{
public static void main(String[] args)
{
String[] str = new String[]{"ab", "cd", "ef", "gh"};
Queue<String> queue = new LinkedList<String>();
Display(str, queue);
}
public static void Display(String[] str, Queue<String> queue)
{
for(int i=0; i<str.length; i++)
queue.add(str[i]);
while(!queue.isEmpty())
System.out.print(queue.poll() + " ");
System.out.println();
}
}
/**
* 输出如下:
* ab cd ef gh
*/
分享到:
相关推荐
在“利用栈队列逆置”这个实验环节,可能使用到了栈和队列的组合。通常,队列不能直接实现逆置操作,因为FIFO特性使得无法直接改变元素的顺序。但是,可以通过一个辅助栈来实现队列的逆置:将队列中的所有元素依次出...
本主题关注的是如何使用C语言来实现数据结构中的栈和队列,这是两种基础但非常重要的抽象数据类型(ADT)。 栈(Stack)是具有后进先出(LIFO)特性的数据结构。它类似于一个堆叠的盘子,最新的元素被放在顶部,...
栈队列串数组
数栈队列PPT学习教案 本PPT学习教案主要介绍了数栈队列的概念和操作,包括栈和队列的定义、基本操作、特点和应用。 一、栈的定义和操作 栈是一种受限的线性表,限定在表尾进行插入和删除操作。栈的基本操作包括...
在IT领域,数据结构是编程基础中的重要组成部分,而栈(Stack)和队列(Queue)是最基础且广泛使用的两种数据结构。本项目是用C语言实现的栈和队列,提供了可加载和使用的源代码,这对于理解这两种数据结构的工作...
1、5个男生3个女生排成一排,3个女生要排在一起,有多少种不同的排法?
本压缩包文件"电信设备-信令网关的协议栈队列的维护方法、装置及系统.zip"包含了一份关于信令网关协议栈队列维护的重要文档——"信令网关的协议栈队列的维护方法、装置及系统.pdf",该文档深入探讨了如何有效地管理...
在数据结构的学习中,链表和栈队列是非常重要的基础知识点,它们是实现复杂数据组织和管理的基本方式。 链表是一种常见的线性数据结构,它通过指针将一系列节点连接起来,每个节点包含数据部分和指向下一个节点的...
通过这个"数据结构线性表、栈队列的思维导图.zip"文件,你可以深入理解这三个基本数据结构,以及它们在实际问题中的应用。思维导图的视觉化呈现能帮助你更好地掌握这些知识,并且在解决实际编程问题时能迅速回忆和...
任务描述栈和队列都提供 Push/Pop 两种操作,其中 Push:加入一个元素。Pop:弹出一个元素。给出一个线性结构的进出顺序,判定这个结构是栈还是队列。(40’) 输入描述第一行输入一个整数s,代表有s组测试数据。第一...
资源面试算法LeetCode代码与讲解视频之栈队列和堆的集合,提供了一系列针对性的练习和深入浅出的视频讲解。这些视频和代码实例以百度网盘的方式提供分享,访问链接为特定的提取码所标识的地址。通过这些资源,求职者...
超级数组和链表及栈队列
考研必备 数据结构 第二章 栈队列和数组 请使用IE浏览器观看! 欢迎下载!
本压缩包包含关于三种基本数据结构——串(字符串)、栈和队列的实现代码,分别是1.c、2.c、3.c、顺序栈.cpp、循环队列.cpp、链队列.cpp,以及一个名为"串.rar"的子文件,可能包含了字符串处理的相关资料,还有...
在计算机科学中,栈(Stack)和队列(Queue)是两种非常基础且重要的数据结构。它们被广泛应用于各种算法和程序设计中,为解决许多实际问题提供了有效的数据管理手段。下面将详细介绍栈和队列的基本概念、实现方式...
这是我用C语言写的停车场算法,用队列来模拟等待车队,用栈来模拟停车场地。可以正常出车,也可以非正常出车,希望对大家有帮助。
线性表、栈和队列是计算机科学中最基础的数据结构之一,它们在各种算法和程序设计中都有着广泛的应用。这个压缩包提供了这些数据结构的线性存储和链式存储结构的源文件,对于理解它们的工作原理和实际操作非常有帮助...
### 停车场管理系统(栈与队列实现) #### 背景介绍 本案例设计了一种基于栈和队列的数据结构实现的停车场管理系统。系统通过栈来模拟停车场内部车辆的停放情况,并利用队列来模拟停车场外等待进入的车辆情况。...
入栈和出栈的基本操作 一个基于C语言栈队列实现停车场小项目.