数据结构 栈
嘿,小伙伴们,今天我们来聊聊计算机中数据结构中的栈。
介绍
概念
首先,让我们来看看栈是什么。栈是一种后进先出(LIFO)的数据结构,它可以存储一系列的元素,每个元素只能在栈顶进行访问和修改。栈通常用于实现递归算法、函数调用等场景。
优缺点
那么,栈有哪些优缺点呢?优点是它非常适合实现递归算法,因为每次递归调用都会将新的参数压入栈中,直到递归结束时再将结果弹出。此外,栈的空间利用率也非常高,因为每个元素都只能在栈顶进行访问和修改。缺点是栈的插入和删除操作需要O(n)的时间复杂度,因此在处理大量数据时可能会比较慢。
使用场景
接下来,我们来看看栈的应用场景。栈通常用于实现递归算法、函数调用等场景。例如,计算阶乘就是一个典型的递归算法,可以使用栈来实现。此外,栈还可以用于实现表达式求值、括号匹配等场景。
设计
/**
* @author sssd
* @careate 2023-07-09-5:53
*/
public interface Stack<E> {
void push(E e); //压栈
E pop();//出栈
E peek();//查看
int getSize();
boolean isEmpty(); //是否为空
}
实现
数组实现
/**
* @author sssd
* @careate 2023-07-09-6:06
*/
public class ArrayStack<E> implements Stack<E> {
private ArrayList<E> arrayList;
public ArrayStack(int capacity){
arrayList = new ArrayList<>(capacity);
}
public ArrayStack(){
arrayList = new ArrayList<>();
}
@Override
public void push(E e) {
arrayList.addLast(e);
}
@Override
public E pop() {
return arrayList.removeLast();
}
@Override
public E peek() {
return arrayList.getLast();
}
@Override
public int getSize() {
return arrayList.getSize();
}
@Override
public boolean isEmpty() {
return arrayList.isEmpty();
}
}
作者:傻傻三多
出处:https://www.sssd.top/archives/1688033050884
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。