`
午刀十
  • 浏览: 34140 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

栈及其应用

阅读更多
栈先进后出,实现比较简单,只操作栈顶:
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章 栈及其应用数据结构算法\第4章 栈及其应用

    数据结构实验报告—栈及其应用.pdf

    数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构...

    数据结构实验报告—栈及其应用.docx

    数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx数据结构实验报告—栈及其应用.docx...

    数据结构栈及其应用PPT学习教案.pptx

    数据结构栈及其应用PPT学习教案.pptx

    数据结构试验6-栈及其应用

    数据结构第六次试验,栈的实现及其应用,不能确保完全符合要求。

    栈及其应用实验作业.

    不错的作业,大家有空可以做做,很基本的,可以试试看

    数据结构学习--栈及其应用

    栈和对列是两种操作特殊的线性表,在实际中应用相当广泛。本实验的目的在于使学生 深入理解栈的特性,熟悉栈的基本操作,以便在实际问题背景下灵活运用它们,同时巩固对 这种结构的构造方法和掌握其运行过程,了解较...

    栈及其应用,KMP算法

    主要讲述了KMP算法,循环链表排序,栈的概念及应用

    数据结构实验报告-栈及其应用

    TYUT数据结构实验报告——栈及应用

    zigbee协议栈及其应用

    对协议栈有较好的描述,对于学习zigbee的人来说,是宝贵的财富,希望对大家有所帮助

    数据结构课程设计--栈的应用

    数据结构章节--栈。程序主要功能是实现各种类型表达式的计算。类C语言编程...

    栈及其应用-朱全民.ppt

    栈的应用举例(栈与表达式) 处理表达式是高级语言的编绎中的一个基本问题。它的实现是栈的一个重要应用,通过对处理表达式的讨论,可以帮助我们进一步了解栈的性能。

    数据结构栈及其应用实验二

    设计实现一个搜索迷宫进出路径的程序。迷宫如下图,以一个矩阵表示,为了便于路径探索,在迷宫矩阵的四周各增加一行或一列,1表示可行走的地方,反之以0表示,路假定迷宫的入口在第一行第二列,出口在倒数第二行倒数...

    栈和队列的基本操作实现及其应用实验报告

    栈和队列的基本操作实验报告 一、实验目的 1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。 2、会用栈和队列解决简单的实际问题。 二、实验内容 题目:试写一个算法,判断依次读入的一个以@为结束符的...

    数据结构_实验三_栈和队列及其应用.pdf

    数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和...

    2数据结构实验报告二(栈和队列及其应用).docx

    2数据结构实验报告二(栈和队列及其应用).docx2数据结构实验报告二(栈和队列及其应用).docx2数据结构实验报告二(栈和队列及其应用).docx2数据结构实验报告二(栈和队列及其应用).docx2数据结构实验报告二(栈和队列及其...

    2数据结构实验报告二(栈和队列及其应用).pdf

    2数据结构实验报告二(栈和队列及其应用).pdf2数据结构实验报告二(栈和队列及其应用).pdf2数据结构实验报告二(栈和队列及其应用).pdf2数据结构实验报告二(栈和队列及其应用).pdf2数据结构实验报告二(栈和队列及其应用...

    2数据结构 实验报告二(栈和队列及其应用).pdf

    2数据结构 实验报告二(栈和队列及其应用).pdf2数据结构 实验报告二(栈和队列及其应用).pdf2数据结构 实验报告二(栈和队列及其应用).pdf2数据结构 实验报告二(栈和队列及其应用).pdf2数据结构 实验报告二(栈和队列...

Global site tag (gtag.js) - Google Analytics