看到这句话的时候证明:此刻你我都在努力
加油陌生人
个人主页:Gu Gu Study
专栏:用Java学习数据结构系列
喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹
喜欢的话可以点个赞谢谢了。
作者:小闭
前言
前面已经给大家讲述了顺序表和链表,那么下面就到了,栈和队列,如果我们对顺序表和链表已经熟悉的话,那么我们学习栈和队列是非常轻松的。废话不多说,我们直接进入正题。
栈
这里数据结构的栈和我们常说储存数据的栈区可不是同一个东西。那么这里的栈的具体概念是什么呢?
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除 操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out) 的原则。只要读懂“后进先出”就可以了解我们的栈了。我们看一下图就懂了
从图中我们很明显就看出了,我们想要从栈中取东西,那么就要从栈顶取出,而且每次只能取出最顶的数据。
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
出栈:栈的删除操作叫做出栈。出数据也在栈顶。
简单描述栈的特点:栈数据的增删都是在一头进行,即在栈顶
栈的主要方法
- Push:向栈中添加一个元素。
- Pop:移除栈顶的元素。
- Peek 或 Top: 返回栈顶元素但不移除它。
- IsEmpty : 检查栈是否为空。
- Size:返回栈中元素的数量。
这么一看可能已经大致了解了栈的概念和方法了,那么我们现在就用代码使用一下栈。
import java.util.Stack;
public class T {
public static void main(String[] args) {
Stack<Integer> stack=new Stack<>();
Stack<Integer> stack2=new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack2.push(4);
stack2.push(5);
stack2.push(6);
stack2.push(7);
System.out.println(stack.peek());//查看栈顶的数据
//依次进行数据出栈
System.out.print(stack.pop()+" ");
System.out.print(stack.pop()+" ");
System.out.print(stack.pop()+" ");
System.out.print(stack.pop()+" ");
stack.addAll(stack2);
System.out.println();
System.out.print(stack.pop()+" ");
System.out.print(stack.pop()+" ");
System.out.print(stack.pop()+" ");
System.out.print(stack.pop()+" ");
}
}