【用Java学习数据结构系列】探索栈和队列的无尽秘密

看到这句话的时候证明:此刻你我都在努力

加油陌生人

b2a12381f91ec3f55be9f5bee28452af.png

个人主页:Gu Gu Study
专栏:用Java学习数据结构系列
喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹

喜欢的话可以点个赞谢谢了。
作者:小闭


前言

前面已经给大家讲述了顺序表和链表,那么下面就到了,栈和队列,如果我们对顺序表和链表已经熟悉的话,那么我们学习栈和队列是非常轻松的。废话不多说,我们直接进入正题。

这里数据结构的栈和我们常说储存数据的栈区可不是同一个东西。那么这里的栈的具体概念是什么呢?

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除 操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out) 的原则。只要读懂“后进先出”就可以了解我们的栈了。我们看一下图就懂了

b443e7d4807195561ba6fd3aaaa26e5e.png

ea8bebfcbe4897aab66c1ed014ef7680.gif

从图中我们很明显就看出了,我们想要从栈中取东西,那么就要从栈顶取出,而且每次只能取出最顶的数据。

压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。

出栈:栈的删除操作叫做出栈。出数据也在栈顶。

简单描述栈的特点:栈数据的增删都是在一头进行,即在栈顶

栈的主要方法

  1. Push:向栈中添加一个元素。
  2. Pop:移除栈顶的元素。
  3. PeekTop: 返回栈顶元素但不移除它。
  4. IsEmpty : 检查栈是否为空。
  5. 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()+" ");




    }


}