1、队列基础知识
1.1、队列的概念和基本特征
队列的特点是结点的排队次序和出队次序,即先入队者先出队(FIFO first in first out)
实现队列
基于链表实现队列,在尾部后插入元素,在front删除元素。
代码实现如下:
public class LinkQueue {
private ListNode front;
private ListNode rear;
private int size;
public LinkQueue() {
this.front = new ListNode(0);
this.rear = new ListNode(0);
}
/**
* 入队
* @param value
*/
public void push(int value){
ListNode newNode = new ListNode(value);
ListNode temp = front;
while (temp.next != null){
temp = temp.next;
}
temp.next = newNode;
rear = newNode;
size++;
}
/**
* 出队
* @return
*/
public int pull(){
if (front.next == null){
System.out.println("队列已空");
}
ListNode firstNode = front.next;
front.next = firstNode.next;
size--;
return firstNode.val;
}
/**
* 遍历队列
*/
public void traverse(){
ListNode temp = front.next;
while (temp != null){
System.out.println(temp.val+"\t");
temp = temp.next;
}
}
statis class ListNode{
//结点的值
public int val;
//下一个结点
public ListNode next;
//结点的构造函数 无参
public ListNode() {
}
//结点的构造函数,一个参数
public ListNode(int val) {
this.val = val;
}
//结点的构造函数 两个参数
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
public static void main(String[] args) {
LinkQueue linkQueue = new LinkQueue();
linkQueue.push(1);
linkQueue.push(2);
linkQueue.push(3);
System.out.println("第一个出兑的元素为:" + linkQueue.pull());
System.out.println("队列总的元素为:");
linkQueue.traverse();
}
}