`
午刀十
  • 浏览: 35013 次
  • 性别: 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数据结构和算法中文第二版》
分享到:
评论

相关推荐

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

    在这个"数据结构试验6-栈及其应用"中,我们将深入探讨一个重要的数据结构——栈,并研究其在实际问题中的应用。 栈是一种线性数据结构,遵循“后进先出”(LIFO,Last In First Out)的原则。它类似于我们日常生活...

    栈及其应用,KMP算法

    **栈及其应用** 栈是一种特殊的线性数据结构,遵循“后进先出”(LIFO)的原则。在栈中,最新添加的元素(称为顶部元素)是第一个被删除的元素。栈的操作主要有两个基本操作:压入(Push)和弹出(Pop)。压入操作...

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

    在这个实验“数据结构栈及其应用实验二”中,主要的目标是设计并实现一个程序,用于在给定的迷宫中搜索从入口到出口的可行路径。迷宫被表示为一个二维矩阵,用1代表可行走区域,0代表障碍。迷宫的入口位于第一行第二...

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

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

    数据结构实验与实验报告 栈及其应用-迷宫问题

    基础数据结构实验与实验报告 【实验三】栈及其应用——迷宫问题 包含了完整的可以正确编译运行的C++源代码与实验报告(内含需求分析、概要设计与详细设计、时空复杂度分析、用户手册等)

    栈及其应用实验作业.

    栈在计算机科学中有着广泛的应用,特别是在算法实现、编译原理、操作系统等多个领域。 对于本实验而言,我们将重点学习栈的顺序存储结构和链式存储结构。顺序栈是指用一维数组来存储栈中的元素,它的优点是访问速度...

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

    栈的应用广泛,包括括号匹配、递归算法、内存管理等。 栈的特性: 1. 定义:栈是一种只能在一端进行插入和删除操作的线性表,这一端被称为栈顶。 2. 逻辑结构:栈是线性的,元素有序排列,但插入和删除只在栈顶进行...

    zigbee协议栈及其应用

    Zigbee协议栈是无线通信领域的一个重要组成部分,尤其在物联网(IoT)应用中扮演着关键角色。本文将深入探讨Zigbee协议栈的结构、功能、组网原理以及其在实际产品中的应用。 首先,我们要理解Zigbee协议栈的层级结构...

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

    本课程设计的重点是探讨栈在解决实际问题,特别是表达式计算中的应用。 栈在表达式计算中的应用广泛,最常见的就是逆波兰表示法(Postfix Notation)或称后缀表达式。逆波兰表示法是一种没有括号的表达式表示方式,...

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

    本实验报告重点探讨了栈的顺序存储结构及其在实际问题中的应用。 实验目标是让学生熟悉栈的基本特性和操作,包括入栈(Push)、出栈(Pop)、获取栈顶元素(Peek)等。在顺序存储结构中,栈通常用数组来实现,栈顶...

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

    通过这个实验,学生能够深入理解栈数据结构的特性和操作,并学会如何将栈应用于实际问题中,尤其是理解栈在解决递归问题、表达式求值、编译器设计等多个领域的重要作用。此外,实验还锻炼了学生的编程能力,特别是在...

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

    在这个实验报告中,我们主要关注栈的顺序存储结构及其在实际问题中的应用。 栈的基本操作包括入栈(Push)、出栈(Pop)、获取栈顶元素(Top)以及检查栈的状态(如是否为空或已满)。在顺序栈的实现中,通常使用...

    栈及其应用-朱全民.ppt

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

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

    ### 栈和队列的基本操作实现及其应用实验报告 #### 实验目的 1. **熟练掌握栈和队列的基本操作**:在数组和链表两种存储结构上实现栈和队列的基本操作。 2. **应用栈和队列解决实际问题**:通过具体的编程练习,...

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

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

    Educoder题目:数据结构-栈基本运算的实现及其应用答案解析.md

    Educoder题目:数据结构-栈基本运算的实现及其应用答案解析.md

    数据结构栈的应用——括号匹配

    "匹配.cpp"文件的实现细节可能包括了具体的代码结构、错误处理和优化技巧,这些都是学习和理解栈及其应用的重要实践案例。通过深入理解这个问题,我们可以更好地掌握数据结构与算法在实际问题中的应用,提高编程能力...

Global site tag (gtag.js) - Google Analytics