队列数据结构
1.定义:
基于一种先进先出(FIFO)原则的数据结构。
2.图解:
3.队列数据结构的设计
4.代码实现
(1)队列属性以及构造方法
//头结点
private Node head;
//元素个数
private int length;
//构造方法
public Queue_队列() {
head = new Node(null,null);
length = 0;
}
(2)内部结点类Node
//内部结点类Node
private class Node{
//数据域
T item;
//指针域
Node next;
//构造方法
public Node(T item,Node next){
this.item = item;
this.next = next;
}
}
(3)功能方法
<1>判断队列是否为空
//获取队列是否为空方法
public boolean isEmpty(){
return length == 0;
}
<2>获取队列的元素个数
//获取队列的长度方法
public int getLength(){
return length;
}
<3>往队列中插入一个元素
//从队列中插入一个元素
public void insert(T insertValue){
//创建出新结点
Node newNode = new Node(insertValue,null);
/*
插入结点操作:①将新结点的下一个改为原来到第一个结点;(当原来为空时省略)
②将头结点的下一个改为新结点;
③元素个数+1。
*/
if (!isEmpty()){
newNode.next = head.next;
}
head.next = newNode;
length++;
}
<4>从队列中拿出一个元素
//从队列中拿出一个元素
public T remove(){
//队列为空时:
if (isEmpty()) return null;
/*
队列不为空时:①找到链表倒数第二位的元素;
②将其的下一个改为null;
③元素个数-1。
*/
Node n = head;
for (int i = 0;i < length-1;i++){
n = n.next;
}
T removeValue = n.next.item;
n.next = null;
length--;
return removeValue;
}
完!