数据结构中的栈,堆和队列

在学习数据结构的过程中经常会看到栈,堆,队列。那这三者互相之间是什么关系呢?今天我来给大家解释一下。

:又名堆栈,是一种运算受限的线性表。只允许在栈顶插入和删除元素。栈顶是低位,栈底是高位。栈中没有元素时称为空栈,栈符合先进后出原则。

简单点来说栈的插入和删除就跟叠箱子一样,我们取出放在箱子里面底下的东西(放入时间较早的物体),我们首先要移开压在它上面的物体(放入时间较晚的物体)。
在栈中最重要的操作就是push(添加)和pop(删除)
push:在栈的顶端放入一个元素
pop:在栈的顶端移除一个元素,并返回被删除的元素

在这里插入图片描述 Java代码实现(有兴趣的小伙可以自己运行一下)

import java.util.Stack;

public class Test  {
    
    
    public static void main(String[] args) {
    
    
        //定义一个栈 stack 存放字符串
        Stack<String> stack = new Stack<>();
        stack.push("VIP1");
        stack.push("VIP2");
        System.out.println("栈初始化:"+stack);
        //往栈中添加一个VIP3
        stack.push("VIP3");
        System.out.println("添加后的栈:"+stack);
        //对栈删除一个元素
        String pop = stack.pop();
        System.out.println("被删除的元素:"+pop);
        System.out.println("删除后的栈:"+stack);
    }
}

在这里插入图片描述
:堆是一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,指的就是完全二叉树也就是二叉堆堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。如果堆中如果节点的值都大于等于其子节点的值,我们把它称为大顶堆,如果都小于等于其子节点的值,我们将其称为小顶堆。
由于堆的这个特性,常用来实现优先队列

由于堆的篇幅过多,堆的详细内容后面会专门开一个blog讲的

队列:队列是一种运算受限的线性表。 特殊之处在于它只允许在队列的前端进行删除操作,而在队列的后端进行插入操作。当队列中没有元素时,称为空队列。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。与栈所的先进后出的原则,队列的原则是先进先出

在这里插入图片描述
在Java中LinkedList实现了Queue的接口,所以可以用LinkedList来表示链表
(当然也可以用数组和两个堆栈去实现)

import java.util.LinkedList;
import java.util.Queue;


public class Test  {
    
    
    public static void main(String[] args) {
    
    
        //定义一个链表
        Queue<String> queue = new LinkedList<String>();
        //添加元素
        queue.offer("a");
        queue.offer("b");
        queue.offer("c");
        //初始化的链表
        for(String q : queue){
    
    
            System.out.println(q);
        }
        System.out.println("新增一个元素d:"+queue.offer("d"));
        System.out.println("遍历链表");
        for(String q : queue){
    
    
            System.out.println(q);
        }
        System.out.println("删除一个元素:"+queue.poll()); //返回第一个元素,并在队列中删除
        System.out.println("遍历链表");
        for(String q : queue){
    
    
            System.out.println(q);
        }
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43649799/article/details/124029908