博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[数据结构]P1.3 栈 Stack
阅读量:5173 次
发布时间:2019-06-13

本文共 2157 字,大约阅读时间需要 7 分钟。

* 注: 本文/本系列谢绝转载,如有转载,本人有权利追究相应责任。 

栈是一种先进后出的结构(FILO),常见的操作有:push 入栈、pop删除栈顶元素并返回、peek 查看栈顶元素

与其他线性结构一样,栈的实现也有数组和链表两种形式。如何实现依据具体应用,例如栈的大小是确定的,那么使用数组实现开销最小,

如果栈需要可扩展,则建议使用链表实现。

 

这边使用数组实现一个,使用链表实现的可以自行研究。

Java代码:

 

package ds3.stack;import java.util.Arrays;public class ArrayStack {    static class Stack{        long[] data;        int top = -1;        int maxSize;        int size;        Stack(int maxSize){            this.maxSize = maxSize;            data = new long[this.maxSize];        }        public boolean isEmpty(){            return top == -1;        }        public boolean isFull(){            return top + 1 == data.length;        }        /**         * 将元素推进数组         * @param value         */        public void push(long value){            if(isFull()){                System.out.println("The stack is full!");            }else{                this.data[++top] = value;                size++;            }        }        /**         * 查看栈顶元素         */        public long peek(){            return this.data[this.top];        }        /**         * 查看栈顶元素并删除栈顶元素         * @return         */        public Long pop(){            Long result = null;            if(isEmpty()){                System.out.println("The stack is empty!");            }else{                result = this.data[--top];                size--;            }            return result;        }        public void foreachPrint(){            System.out.println(Arrays.toString(Arrays.copyOf(data,size)));        }    }    public static void main(String[] args) {        Stack stack = new Stack(4);        stack.foreachPrint();        stack.push(1);        stack.foreachPrint();        stack.push(2);        stack.foreachPrint();        stack.push(3);        stack.foreachPrint();        stack.push(4);        stack.foreachPrint();        stack.push(5);        stack.foreachPrint();        System.out.println(stack.peek());        stack.foreachPrint();        System.out.println(stack.pop());        stack.foreachPrint();    }}

result:

[][1][1, 2][1, 2, 3][1, 2, 3, 4]The stack is full![1, 2, 3, 4]4[1, 2, 3, 4]3[1, 2, 3]

 

转载于:https://www.cnblogs.com/yosql473/p/10731660.html

你可能感兴趣的文章
NOI2018垫底记
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
(转)Tomcat 8 安装和配置、优化
查看>>
(转)Linxu磁盘体系知识介绍及磁盘介绍
查看>>
跨域问题整理
查看>>
[Linux]文件浏览
查看>>
获取国内随机IP的函数
查看>>
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
TCP/IP 邮件的原理
查看>>
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>