本文作者:程序员飞云
队列的基本概念
队列的特点是元素的入队出队满足先进先出(FIFO)的特点,即先入对的元素先出队,和栈相反。
队列和栈一样有两种实现方式,数组和链表。
队列分为单端队列和双端队列,
队列的实现
链表实现
- 初始化队头和队尾
// 队头private Node front;// 队尾private Node rear;// 队列大小private int size;
public LinkQueue() { this.front = new Node(0); this.rear = new Node(0);}- 入队操作
直接在原来的队尾上添加新的节点就可以
/** * 入队 * * @param data */public void push(int data) { Node newNode = new Node(data); Node temp = front; while (temp.next != null) { temp = temp.next; } temp.next = newNode; rear = newNode; size++;}- 出队操作
既然满足先进先出,那么肯定是头节点出队

/** * 出队 * * @return */public int pop() { if (front.next == null) { return -1; } Node firstNode = front.next; front.next = firstNode.next; size--; return firstNode.data;}完整代码
public class LinkQueue { // 队头 private Node front; // 队尾 private Node rear; // 队列大小 private int size;
public LinkQueue() { this.front = new Node(0); this.rear = new Node(0); }
/** * 入队 * * @param data */ public void push(int data) { Node newNode = new Node(data); Node temp = front; while (temp.next != null) { temp = temp.next; } temp.next = newNode; rear = newNode; size++; }
/** * 出队 * * @return */ public int pop() { if (front.next == null) { return -1; } Node firstNode = front.next; front.next = firstNode.next; size--; return firstNode.data; }
/** * 遍历队列 */ public void traverse() { Node temp = front.next; while (temp != null) { System.out.print(temp.data + "\t"); temp = temp.next; } }}
class Node { int data; Node next;
public Node(int data) { this.data = data; }}
评论