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数据结构之栈的主要内容,如果未能解决你的问题,请参考以下文章