作者简介: zoro-1,目前大二,正在学习Java,数据结构等
作者主页: zoro-1的主页
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖
数据结构之栈
- 概念
- 特性
- 常用方法
- 栈模拟实现
- 接口
- 实现类
概念
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫做出栈。出数据在栈顶
特性
先进后出
例如生活中的羽毛球:
常用方法
栈模拟实现
接口
public interface IStack {void push(int x);int pop();int peek();int size();boolean empty();boolean full();}
实现类
public class MyStack implements IStack {private int[] elem;private int usedSize;//可以存放数据元素的下标private static final int DEFAULT_CAPACITY = 10;private int size = 0;public MyStack() {this.elem = new int[DEFAULT_CAPACITY];this.size = DEFAULT_CAPACITY;}public MyStack(int size) {this.elem = new int[size];this.size = size;}@Overridepublic void push(int x) {if (usedSize >= this.size) {throw new IllegalArgumentException("栈满了");}elem[usedSize++] = x;}@Overridepublic int pop() {if (full()) {throw new IllegalArgumentException("栈空了");}int m= elem[usedSize-1];usedSize--;return m;}@Overridepublic int peek() {if (full()) {throw new IllegalArgumentException("栈空了");}return elem[usedSize - 1];}@Overridepublic int size() {return usedSize;}@Overridepublic boolean empty() {return usedSize == 0;}@Overridepublic boolean full() {return usedSize == size;}
}
今天的分享到这就结束了,记得三连哦,谢谢大家支持