数据结构之栈
作者简介: 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;
}
@Override
public void push(int x) {
if (usedSize >= this.size) {
throw new IllegalArgumentException("栈满了");
}
elem[usedSize++] = x;
}
@Override
public int pop() {
if (full()) {
throw new IllegalArgumentException("栈空了");
}
int m= elem[usedSize-1];
usedSize--;
return m;
}
@Override
public int peek() {
if (full()) {
throw new IllegalArgumentException("栈空了");
}
return elem[usedSize - 1];
}
@Override
public int size() {
return usedSize;
}
@Override
public boolean empty() {
return usedSize == 0;
}
@Override
public boolean full() {
return usedSize == size;
}
}
今天的分享到这就结束了,记得三连哦,谢谢大家支持