栈 数据结构

定义与实例

定义

是一种特殊的线性表 ,其插入和删除操作都在表的同一端进行。这一端成为栈顶,另一端被称为栈底
栈是后进先出表

现实世界中的栈

  • 餐厅中取盘子时总是先拿取最上面的盘子,当补充新的盘子时总是将盘子放在最上面
  • 打印机进行打印时,总是先打印位于最上方的纸

抽象数据类型

abstract class stack {
    empty();//栈为空时返回 true,否则返回false
    size();//返回栈中元素个数
    top();//返回栈顶元素
    pop();//删除栈顶元素
    push(x);//将元素压入栈顶
}

数组描述

私有数据变量
    private int theSize;
    private T[ ]stack;
top()操作
public T top(){
        if(empty())throw new EmptyStackException();
        return stack[theSize-1];
    }
pop()操作
    public void pop(){
        if(empty())throw new EmptyStackException();
        theSize--;
    }
push操作
    public void push(T theElement){
        if(theSize==stack.length)ensureCapacity(2*theSize+1);
        stack[theSize++]=theElement;
    }
itreator操作
 @Override
    public Iterator<T> iterator() {
        return new stackIterator();
    }
    private class stackIterator implements java.util.Iterator<T>{
        private int current=theSize;
        @Override
        public boolean hasNext(){
            return current>0;
        }
        @Override
        public T next(){
            if(!hasNext())throw new NoSuchElementException();
            return stack[--current];
        }
    }

栈的应用

中缀表达式转后缀表达式与后缀表达式的计算

中缀表达式转后缀表达式与后缀表达式的计算

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值