栈先进后出,实现比较简单,只操作栈顶:
class StackX
{
private final int maxSize;
private final char[] stackArray;
private int top;
public StackX(int ms)
{
maxSize = ms;
stackArray = new char[maxSize];
top = -1;
}
public void push(char item)
{
stackArray[++top] = item;
}
public char pop()
{
return stackArray[top--];
}
public char peak()
{
return stackArray[top];
}
public boolean isEmpty()
{
return (top == -1);
}
public boolean isFull()
{
return (top == maxSize - 1);
}
}
应用1:反转字符:
class Reverse
{
private final String input;
private String output;
Reverse(String in)
{
input = in;
}
/**
* 反转字符
*
* @return String
*/
public String doReverse()
{
int stackSize = input.length();
StackX stackX = new StackX(stackSize);
for(int i = 0; i < input.length(); i++)
{
char chin = input.charAt(i);
stackX.push(chin);
}
output = "";
while (!stackX.isEmpty())
{
char chout = stackX.pop();
output = output + chout;
}
return output;
}
}
应用2:校验格式
class BracketChecker
{
private final String input;
BracketChecker(String in)
{
input = in;
}
/**
* 校验格式
*
* @return String
*/
public void check()
{
int stackSize = input.length();
StackX stackX = new StackX(stackSize);
for(int i = 0; i < input.length(); i++)
{
char chin = input.charAt(i);
switch(chin)
{
case '{':
case '[':
case '(':
stackX.push(chin);
break;
case '}':
case ')':
case ']':
if(!stackX.isEmpty())
{//表达式不匹配
char chpop = stackX.pop();
if((chin == '}' && chpop != '{') || (chin == ']' && chpop != '[') || (chin == ')' && chpop != '('))
{
System.out.println("ERROR RIGHT1 COMPLETE AT " + i);
}
}
else
{ //只有右扣号,没有左扣号
System.out.println("ERROR RIGHT HAVE NOT COMPLETE " + i);
}
break;
default:
break;
}
}
if(!stackX.isEmpty())
{
System.out.println("ERROR HAVE NOT RIGHT ");
}
}
}
注:以上代码均出自《Java数据结构和算法中文第二版》
分享到:
相关推荐
数据结构算法\第4章 栈及其应用数据结构算法\第4章 栈及其应用数据结构算法\第4章 栈及其应用
数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构...
数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx...
数据结构栈及其应用PPT学习教案.pptx
数据结构第六次试验,栈的实现及其应用,不能确保完全符合要求。
不错的作业,大家有空可以做做,很基本的,可以试试看
栈和对列是两种操作特殊的线性表,在实际中应用相当广泛。本实验的目的在于使学生 深入理解栈的特性,熟悉栈的基本操作,以便在实际问题背景下灵活运用它们,同时巩固对 这种结构的构造方法和掌握其运行过程,了解较...
主要讲述了KMP算法,循环链表排序,栈的概念及应用
TYUT数据结构实验报告——栈及应用
对协议栈有较好的描述,对于学习zigbee的人来说,是宝贵的财富,希望对大家有所帮助
数据结构章节--栈。程序主要功能是实现各种类型表达式的计算。类C语言编程...
栈的应用举例(栈与表达式) 处理表达式是高级语言的编绎中的一个基本问题。它的实现是栈的一个重要应用,通过对处理表达式的讨论,可以帮助我们进一步了解栈的性能。
设计实现一个搜索迷宫进出路径的程序。迷宫如下图,以一个矩阵表示,为了便于路径探索,在迷宫矩阵的四周各增加一行或一列,1表示可行走的地方,反之以0表示,路假定迷宫的入口在第一行第二列,出口在倒数第二行倒数...
栈和队列的基本操作实验报告 一、实验目的 1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。 2、会用栈和队列解决简单的实际问题。 二、实验内容 题目:试写一个算法,判断依次读入的一个以@为结束符的...
数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和...
2数据结构实验报告二(栈和队列及其应用).docx2数据结构实验报告二(栈和队列及其应用).docx2数据结构实验报告二(栈和队列及其应用).docx2数据结构实验报告二(栈和队列及其应用).docx2数据结构实验报告二(栈和队列及其...
2数据结构实验报告二(栈和队列及其应用).pdf2数据结构实验报告二(栈和队列及其应用).pdf2数据结构实验报告二(栈和队列及其应用).pdf2数据结构实验报告二(栈和队列及其应用).pdf2数据结构实验报告二(栈和队列及其应用...
2数据结构 实验报告二(栈和队列及其应用).pdf2数据结构 实验报告二(栈和队列及其应用).pdf2数据结构 实验报告二(栈和队列及其应用).pdf2数据结构 实验报告二(栈和队列及其应用).pdf2数据结构 实验报告二(栈和队列...