数据结构——栈与双端栈

栈的定义

是限定仅在表尾进行插入和删除操作的线性表
我们把允许插入和删除的一端称为栈顶,另一端称为栈底
不含任何数据元素的栈称为空栈
在日常生活中,子弹的装填就是栈的例子,子弹一颗一颗压入,如同进栈,一颗一颗射出,如同出栈。

进栈

在这里插入图片描述
空栈,元素未进栈
在这里插入图片描述
元素依次进栈,最先进栈的元素被压入栈底。

出栈

在这里插入图片描述
栈顶元素先出栈,栈底最后出栈,也就是说最先进入的元素最后出栈,如同现实生活中子弹的弹匣。

栈的实现

创建一个默认大小的栈(顺序表)

public ArrayStack() {
		list =new ArrayList<E>();
	}

创建一个容量为指定capacity的栈

public ArrayStack(int capacity) {
		list = new ArrayList<E>(capacity);
	}

获取元素个数-getSize()

@Override
	public int getSize() {		//获取元素个数
		return list.getSize();
	}

判断栈是否为空-isEmpty()

@Override
	public boolean isEmpty() {	//判断是否为空
		return list.isEmpty();
	}

插入元素-push()

@Override
	public void push(E e) {		//栈顶插入元素
		list.addLast(e);
	}

删除元素-pop()

@Override
	public E pop() {			//删除栈顶元素
		return list.removeLast();
	}

获取栈顶元素-peek()

@Override
	public E peek() {			//获取栈顶元素
		return list.getLast();
	}

获取栈底元素-first()

	public E first() {			//获取栈底元素
		return list.getFirst();
	}

清空栈-clear()

@Override
	public void clear() {	//清空栈
		list.clear();
	}

比较方法-equals()

@Override
	public boolean equals(Object obj) {		//两个栈比较
		if(obj == null) {									//如果为空返回false
			return false;
		}
		if(obj =
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值