欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构——队列链表实现

程序员文章站 2022-07-14 12:18:40
...

队列抽象数据结构之一,遵循FIFO原则,通过在初始化时构造队首和队尾两个引用(指针)指向一个空节点,作为空队列的标志

package com.shine.test.datastruct;

import java.util.EmptyStackException;

public class LinkQueue<E> {
	
	private Node front,tail;
	class Node {
		E data;
		Node next;
	}
	
	public LinkQueue() {
		 LinkQueue<E>.Node node = new Node();
		 node.data = null;
		 node.next = null;
		 front = tail = node;
	}
	
	public boolean push(E e) {
		LinkQueue<E>.Node temp = new Node();
		temp.data = e;
		temp.next = null;
		tail.next = temp; //当加入第一个元素是应为tail和front指向同一个对象 所以此时相当于front.next =temp,但以后不是
		tail = temp;
		if(temp != null) {
			return true;
		}
		return false;
	}
	
	public E pop() {
		if(front == tail) {
			throw new EmptyStackException();
		}else {
			LinkQueue<E>.Node temp = front.next; 
			E e = temp.data;
			front.next = temp.next;
			
			if(tail == temp) { //当队列中只有一个元素时 需要将队列置空
				tail = front;
			}
			return e;
		}
				 
	}
	public E peek() {
		if(front == tail) {
			throw new EmptyStackException();
		}else {
			LinkQueue<E>.Node temp = front.next; 
			E e = temp.data;
			
			return e;
		}
				 
	}
}