Java数据结构之栈

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数据结构之栈相关的知识,希望对你有一定的参考价值。

package com.xingej.algorithm.datastructure.stack;

/**
 * 数据结构之栈Stack
 * 
 * 以long类型为测试用例
 * 
 * @author erjun 2017年12月4日 下午10:22:34
 */
public class LongStack {
    // 底层数据存储
    private long[] arr;

    // 最大元素数量
    private int maxSize;

    // 当前元素的指针
    private int top;

    public LongStack(int maxSize) {
        this.maxSize = maxSize;
        arr = new long[maxSize];
        top = -1;// 默认值为-1,栈里没有元素
    }

    // 添加数据
    public void push(long value) {
        arr[++top] = value;
    }

    // 查看、并删除元素数据
    public long pop() {
        return arr[top--]; // 先返回,然后,指针再减一
    }

    // 仅仅查看元素
    public long peek() {
        return arr[top];
    }

    // 查看当前栈空间是否为空
    public boolean isEmpty() {
        return top == -1;
    }

    // 查看当前栈空间是否已经满了
    public boolean isFull() {
        return top == (maxSize - 1);
    }

}


测试用例:

package com.xingej.algorithm.datastructure.stack;

import org.junit.Test;

/**
 * 栈的特点:先进后出;
 * 
 * 栈和队列的区别?
 * 
 * 栈的主要组成:一个存数据的容器,如数组,或者链表;一个指针;其他API行为都是围绕容器进行的
 * 
 * 队列的主要组成:一个存数据的容器,如数组,或者链表;两个指针。
 * 
 * 不适合大量存储,只是实现某种算法的一种手段吧,
 * 
 * 受限访问方式
 * 
 * @author erjun 2017年12月6日 上午9:11:40
 */
public class LongStackTest {

    @Test
    public void test() {
        LongStack theStack = new LongStack(10);

        theStack.push(29);
        theStack.push(2);
        theStack.push(9);
        theStack.push(5);

        while (!theStack.isEmpty()) {
            System.out.print(theStack.pop() + " ");
        }
        System.out.println();

    }

}


代码已上传到git上:

https://github.com/xej520/xingej-algorithm












以上是关于Java数据结构之栈的主要内容,如果未能解决你的问题,请参考以下文章

数据结构(java)之栈

Java 大话数据结构 线性表之栈

数据结构之栈和队列及其Java实现

JAVA 数据结构之栈实现

java数据结构与算法之栈(Stack)设计与实现

JAVA数据结构与算法之栈~ 中缀表达式转换为后缀表达式