Java实现--数据结构--栈

栈的介绍

栈 是一种先进后出的一种数据结构。

栈的底层数据结构可以使用数组或者链表来实现。


我们使用数组来实现栈。

思路 :

  • 我们需要定义数组 以及 数组的大小
  • 栈需要栈帧 ,栈帧相当于指针,总是指向栈顶的元素。初始化为-1

准备工作完成,我们开始手写栈的数据结构


package com.my.Stack;

/**
 * @description: 栈 先进后出的一种数据结构
 * 实现 栈 具体有 出栈 入栈 判空  push  pop
 **/
public class MyStack<E> {
    private Object[] stack;  // 创建数组模拟栈
    private int maxSize; // 数组的大小,其实就是栈的大小
    private int top;  // 用于指向栈顶的变量, 初始化应该为 -1 
	
    public MyStack() {
    }
	// 初始化
    public MyStack(int maxSize) {
        stack = new Object[maxSize];
        this.maxSize = maxSize;
        this.top = -1;
    }
    // 判断是否栈已满
    public boolean isFull(){
       return top == maxSize - 1;  
    }
    // 判断是否栈空
    public boolean isEmpty(){
        return top == -1;  // 栈为空就是top始终是 -1
    }

    // 入栈的方法 push
    public void push(E element){
        if (isFull()){
            System.out.println("栈满了,无法入栈");
            return ;
        }
       stack[++top] = element;   // top先加1 再赋值。也可以分开写 。
    }

    // 出栈的方法 pop
    public E pop() throws Exception {
        if(isEmpty()){
            throw new Exception("栈已空.......");  // 我这里是抛出了异常,你们大可直接sout输出即可。
        }
        return (E) stack[top--];   // 出栈就是删除。一般我们会返回被出栈的元素。(其实后面你发现,只要是数据结构的东西,到删除这一块,都得返回被删除的数据,记着就好)
    }

    // 遍历栈  (这个没什么好说的)
    public void print(){
        if(isEmpty()){
            System.out.println("栈空了");
            return ;
        }
        for(int i = top; i >=0; i--) {
            System.out.print(stack[i]+" ");
        }
        System.out.println();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值