数据结构四——线性结构之队列

1.队列

队列是先进先出的线性表。在具体应用中通常用链表或者数组来实现。

2.对队列的操作

队列我们可以想像成一个数组,每次插入插入在数组的最后一位,取从第一位来取。

队列主要的操作有以下几个:

(1)入队;

(2)出队;

(3)判断队列是否为空。

package cn.kimtian.array.queue;

/**

* 队列的操作

*

* @author kimtian

*/

public class MyQueue {

/**

* 队列的底层我们可以使用数组来存储数据

*/

int[] elements;

public MyQueue() {

elements = new int[0];

}

/**

* 入队操作

*

* @param element 入队元素

*/

public void addQueue(int element) {

// 创建一个新的数组

int[] newArr = new int[elements.length + 1];

// 把原数组中的元素复制到新的数组中

for (int i = 0; i < elements.length; i++) {

newArr[i] = elements[i];

}

// 把添加的元素放入新数组中

newArr[elements.length] = element;

// 使用新数组替换老数组

elements = newArr;

}

/**

* 出队操作

*/

public int pollQueue() {

// 栈是空的

if (elements.length == 0) {

throw new RuntimeException("queue is empty!");

}

// 把数组的0的位置的元素取出来

int element = elements[0];

// 创建一个新的数组

int[] newArr = new int[elements.length - 1];

// 把原数组中的元素复制到新的数组中

for (int i = 1; i < elements.length; i++) {

newArr[i - 1] = elements[i];

}

// 使用新数组替换老数组

elements = newArr;

return element;

}

/**

* 判断队列是否为空

*/

public boolean isQueueEmpty() {

return elements.length == 0;

}

}

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...