美文网首页
Java - 数据结构-栈

Java - 数据结构-栈

作者: 小菜_charry | 来源:发表于2017-11-16 10:06 被阅读48次

1. 定义

栈(stack),是一种线性存储结构,它有以下几个特点:

    1. 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。
    1. 向栈中添加/删除数据时,只能从栈顶进行操作。

栈通常包括的三种操作:push、peek、pop。

  • push -- 向栈中添加元素。
  • peek -- 返回栈顶元素。
  • pop -- 返回并删除栈顶元素的操作。

2. 简单实现


public class GeneralArrayStack<T> {

    private static final int DEFAULT_SIZE = 12;
    private T[] mArray;
    private int count;

    public GeneralArrayStack(Class<T> type) {
        this(type, DEFAULT_SIZE);
    }

    public GeneralArrayStack(Class<T> type, int size) {
        // 不能直接使用mArray = new T[DEFAULT_SIZE];
        mArray = (T[]) Array.newInstance(type, size);
        count = 0;
    }

    // 将val添加到栈中
    public void push(T val) {
        mArray[count++] = val;
    }

    // 返回“栈顶元素值”
    public T peek() {
        return mArray[count - 1];
    }

    // 返回“栈顶元素值”,并删除“栈顶元素”
    public T pop() {
        T ret = mArray[count - 1];
        mArray[count - 1] = null; /* to let gc do its work */
        count--;
        return ret;
    }

    // 返回“栈”的大小
    public int size() {
        return count;
    }

    // 返回“栈”是否为空
    public boolean isEmpty() {
        return size() == 0;
    }

    // 打印“栈”
    public void printArrayStack() {
        if (isEmpty()) {
            System.out.printf("stack is Empty\n");
        }

        System.out.printf("stack size()=%d\n", size());

        int i = size() - 1;
        while (i >= 0) {
            System.out.println(mArray[i]);
            i--;
        }
    }
}

测试:

public static void main(String[] args) {
    GeneralArrayStack<String> stack = new GeneralArrayStack<>(String.class, 5);

    for (int i = 0; i < 5; i++) {
        stack.push("this is " + i);
    }

    System.out.println("栈顶:" + stack.peek());

    String pop = stack.pop();
    System.out.println("取出的栈顶元素:" + pop);

    stack.printArrayStack();
}

结果:

栈顶:this is 4
取出的栈顶元素:this is 4
stack size()=4
this is 3
this is 2
this is 1
this is 0

相关文章

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • Java数据结构算法(三)树

    本文旨作于收集整理使用!! 导航 Java数据结构算法(一)链表 Java数据结构算法(二)栈和队列 Java数据...

  • Java数据结构算法(四)图

    本文旨作于收集整理使用!! 导航 Java数据结构算法(一)链表 Java数据结构算法(二)栈和队列 Java数据...

  • Java数据结构算法(五)排序

    算法这点粗略整理一下,后面完善 Java数据结构算法(一)链表 Java数据结构算法(二)栈和队列 Java数据结...

  • Android面试题总结(题目+复习链接)

    数据结构 1.栈实现原理 java数据结构与算法之栈(Stack)设计与实现 - CSDN博客 2.链表实现原理 ...

  • 《数据结构与算法之美》- 栈

    栈,在这里说的是一种数据结构。 你还可能知道的栈 提到“栈”,做Java的同学还会想起Java内存模型中的“栈”,...

  • Java核心类库—— 数据结构

    Java核心类库-------数据结构体系图 1.数据结构 2.栈 3.哈希表

  • 复习

    数据结构 数据结构 集合常见数据结构:集合,链表,队列,数组,栈,映射java中:List列表,Set集合,Map...

  • Java数据类型

    Java数据结构中常用的数据结构包含如下8种: 1:数组(Array) 2:栈(Stack) 3:队列(Queue...

  • Java工程师面试题

    JavaOOP Java的数据结构有哪些? 线性表(ArrayList) 链表(LinkedList) 栈(Sta...

网友评论

      本文标题:Java - 数据结构-栈

      本文链接:https://www.haomeiwen.com/subject/rkzkvxtx.html