Java--栈

栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。
栈顶(Top):线性表允许进行插入删除的那一端。
栈底(Bottom):固定的,不允许进行插入和删除的另一端。
空栈:不含任何元素的空表
在这里插入图片描述
栈的特性:
(1)把允许插入的一端称为栈顶(top),对应的另一端称为栈底(bottom)
. (2)如果栈里面不含任何元素那么我们称之为空栈
(3)栈是又称为一种先进后出(Last In First Out)的线性表,简称LIFO结构
注意:
栈是一种特殊的线性表,(栈的元素具有线性关系,既前驱和后继关系。定义中讲到栈的插入和删除表尾进行插入和删除查找,这里的表尾是指栈顶,而不是栈底)
栈的特殊之处在于给线性表加了一些规矩既:栈这种线性表的插入和删除只能在栈顶进行,而不是栈底
对栈的操作
栈的插入叫:进栈也叫压栈或者入栈
栈的删除叫:出栈或者弹出

java中对栈的常见操作

入栈

public void add(int data)
    {
        if(this.size==this.arr.length)
        {
            arr=Arrays.copyOf(arr,arr.length*2);
        }
        arr[size]=data;
        size++;
    }`public int peek()
    {
        if(empty())
        {
            throw new EmptyException("栈为空,无栈顶元素!");
        }
        return arr[size-1];
    }`

出栈

public void pop()
    {
        if(empty())
        {
            throw new EmptyException("栈为空,无法删除!");
        }
        size--;

    }

取栈顶元素

public int peek()
    {
        if(empty())
        {
            throw new EmptyException("栈为空,无栈顶元素!");
        }
        return arr[size-1];
    }

判断栈是否为空

 public boolean empty()
    {
        return this.size==0;
    }

栈的有效元素

public int usedSize()
{
	return usedSize;
}

以下是所有代码

public class MySenondStack
{
    int size;
    int[] arr;
    public MySenondStack()
    {
        arr=new int[10];
    }
    public void add(int data)
    {
        if(size==arr.length)
        {
            arr= Arrays.copyOf(arr,arr.length*2);
        }
        arr[size]=data;
        size++;
    }
    public void pop()
    {
        if(empty())
        {
            throw new EmptyException("空了");
        }
        size--;
    }
    public boolean empty()
    {
        return size==0;
    }
    public int peek()
    {
        if(empty())
        {
            throw new EmptyException("空了");
        }
        return arr[size-1];
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值