码迷,mamicode.com
首页 > 编程语言 > 详细

Java数据结构之栈

时间:2017-12-07 10:58:33      阅读:171      评论:0      收藏:0      [点我收藏+]

标签: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   数据结构      

原文地址:http://blog.51cto.com/xingej/2048184

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!