JAVA数据结构之链式队列的实现

1、结点的实现代码如下所示

public class Node {
	public Object data;
	public Node next;
	
	public Node(Object data){
		this.data = data;
	}
}
2、链式队列的实现代码如下所示

public class LinkQueue {
	private Node front;
	private Node tail;
	private int count;//队列中元素的个数
	
	public LinkQueue(){
		front = null;
		tail = null;
		count = 0;
	}
	
	//入队
	public void append(Object data){
		Node node = new Node(data);
		
		if(front == null){
			front = node;
		}else{
			tail.next = node;
		}
		tail = node;
		
		count++;
	}
	
	//出队
	public Object retrieve(){
		Object ret = null;
		Node node = front;
		
		if(node != null){
			ret = node.data;
			node = null;
			front = front.next;
			count--;
		}
		return ret;
	}
	
	//显示队头元素的值
	public Object getHeader(){
		if(front != null){
			return front.data;
		}
		
		return null;
	}
	
	//获取队列中元素的个数
	public int getCount(){
		return count;
	}
	
	//判断队列是否为空
	public boolean isEmpty(){
		return count == 0;
	}
	
	//清空队列
	public void clear(){
		front = null;
		tail = null;
		count = 0;
	}
}
3、测试代码如下所示

public class Test {

	public static void main(String[] args) {
		LinkQueue linkQueue = new LinkQueue();
		
		linkQueue.append("节点1");
		linkQueue.append("节点2");
		linkQueue.append("节点3");
		linkQueue.append("节点4");
		linkQueue.append("节点5");
		
		System.out.println("队列中的元素个数:"+linkQueue.getCount());
		System.out.println("队头元素的数据:"+linkQueue.getHeader());
		
		System.out.println("出队:");
		while(!linkQueue.isEmpty()){
			System.out.print(linkQueue.retrieve()+"  ");
		}
		
		linkQueue.clear();
		System.out.println("\n队列中的元素个数:"+linkQueue.getCount());
		
	}
}



你可能感兴趣的:(Java)