栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现顺序栈

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现顺序栈

一、代码如下

public class SequenceStack {
    final int MaxSize=10;
    private T[] stackArray;
    private int top;
    //初始化栈
    public  SequenceStack(){
        top = -1;
        stackArray = (T[]) new Object[MaxSize];
    }
    public SequenceStack(int n){
        if (n<=0){
            System.out.println("栈长度不合法");
            System.exit(1);
        }
        top = -1;
        stackArray = (T[]) new Object[n];
    }
    //在栈顶位置插入一个新元素
    public void push(T obj){
        if (top == stackArray.length-1){
            T[] p = (T[]) new Object[top*2 + 2];
            for (int i = 0;i<=top;i++){
                p[i] = stackArray[i];
            }
            stackArray = p;
        }
        top++;
        stackArray[top] = obj;
    }
    //删除栈顶元素
    public T pop( ){
        if (top == -1){
            System.out.println("空栈无法执行弹栈操作");
            return null;
        }
        top--;
        return stackArray[top+1];
    }
    //取栈顶数据元素
    public T getHead(){
        if (top == -1){
            System.out.println("空栈无法取出栈顶元素");
            return null;
        }
        return stackArray[top];
    }
    //判断当前栈是否为空
    public boolean isEmpty( ){
        return top == -1;
    }
    //求出栈中数据元素的个数
    public int size(){
        return top + 1;
    }
    //依次访问栈中每个元素并输出
    public void nextOrder(){
        for (int i = top;i >= 0;i--){
            System.out.println(stackArray[i]);
        }
    }
    //销毁一个已存在的栈
    public void clear(){
        top = -1;
    }

}

二、测试代码如下
 

public class testSequenceStack {
    public static void main(String[] args) {
        SequenceStack stack = new SequenceStack<>();
        int[] a = {1,4,6,23,45,78,25};
        for (int i = 0;i < a.length;i++){
            //执行压栈操作
            stack.push(a[i]);
        }
        System.out.println("原始栈内数据为:");
        stack.nextOrder();
        //弹栈操作
        stack.pop();
        System.out.println("执行弹栈后栈内数据为:");
        stack.nextOrder();
        System.out.println("当前栈顶元素为:"+stack.getHead());
        System.out.println("当前栈为"+stack.isEmpty());//false意为非空
        System.out.println("当前栈的长度为:"+stack.size());
        stack.clear();
        stack.getHead();
    }
}

三、总结

顺序栈本质是一种连续存储空间且只在栈顶进行相关操作的线性表,重点把握对top指针的操作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/827696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号