模型与算法

从屌丝到架构师的飞越(数据结构篇)-队列

2019-06-30  本文已影响8人  走着别浪

一.介绍

队列(Queue)简称队,它也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。我们把进行插入的一端称作队尾(rear),进行删除的一端称作队首(front)。

向队列中插入新元素称为进队或入队,新元素进队后就成为新的队尾元素;从队列中删除元素称为离队或出队,元素离队后,其后继元素就成为队首元素。由于队列的插入和删除操作分别是在各自的一端进行的,每个元素必然按照进入的次序离队,所以又把队列称为先进先出表(First In First Out, 简称FIFO)。

比如:我们去银行办理业务,去坐车都需要排队,新生入学站成一排军训,这些都需要用到我们的队列。

二.知识点介绍

1、队列原理

2、Queue用法

三.上课对应视频的说明文档

1、队列原理

(1) 图一:当我们队列为空的时候,我们放入了元素10,20,30,这个过程叫做入队的过程,放入元素后,我们的队首和队尾都发生了变化,队首是10元素,队尾是30元素。

(2) 图二:当10元素移出后,我们的操作过程是出队的过程,那么我们的队首发生了变化,队首为20元素,队尾不变

(3) 图三:如果我们在次写入一个元素40后,我们的队首不变,队尾发生了变化,队尾元素为40元素。

2、Queue用法

offer()添加一个元素并返回true,如果队列已满,则返回false

poll()移除并返问队列头部的元素,如果队列为空,则返回null

peek()返回队列头部的元素,如果队列为空,则返回null

代码示例:

import java.util.*;

public class QueueTest{

public static void main(String args[]){

Queue q=new LinkedList();

q.offer("A");

q.offer("B");

q.offer("C");

System.out.println(q.peek());//获取队首元素

q.offer("D");

System.out.println(q.poll());//移出并获取队首元素

System.out.println(q);

}

}

代码示例2:

import java.util.LinkedList;

import java.util.Queue;

public class QueueTest {

public static void main(String[] args) {

//add()和remove()方法在失败的时候会抛出异常(不推荐)

Queue<String> queue = new LinkedList<String>();

//添加元素

queue.offer("a");

queue.offer("b");

queue.offer("c");

queue.offer("d");

queue.offer("e");

//迭代元素

for(String q : queue){

System.out.println(q);

}

System.out.println("===");

System.out.println("poll="+queue.poll()); //返回第一个元素,并在队列中删除

for(String q : queue){

System.out.println(q);

}

System.out.println("===");

System.out.println("element="+queue.element()); //返回第一个元素

for(String q : queue){

System.out.println(q);

}

System.out.println("===");

System.out.println("peek="+queue.peek()); //返回第一个元素

for(String q : queue){

System.out.println(q);

}

}

}

上一篇下一篇

猜你喜欢

热点阅读