zoukankan      html  css  js  c++  java
  • 队列的理解和实现(二) ----- 链队列(java实现)

    什么是链队列

    链队是指采用链式存储结构实现的队列,通常链队用单链表俩表示。一个链队显然需要两个分别指示队头和队尾的指针,也称为头指针和尾指针,有了这两个指针才能唯一的确定。

    package 链队列;
    
    public class LinkQueue {
    
    	class Element {
    		Object data;
    		Element next;
    		public Element() {
    			this.data = null;
    			this.next = null;
    		}
    		
    		public Element(Object data) {
    			this.data = data;
    			this.next = null;
    		}
    		
    		public Element(Object data, Element next) {
    			this.data = data;
    			this.next = next;
    		}
    	}
    	
    	private Element front;
    	private Element rear;
    	
    	public LinkQueue() {
    		front = null;
    		rear = null;
    	}
    	
    	public void enQueue(Object data) {
    		Element e = new Element(data);
    		if(this.front != null) {
    			this.rear.next = e;
    			rear = e;
    		}
    		else {
    			this.front = this.rear = e;
    		}
    	}
    	
    	public void deQueue() {
    		if(this.front != null) {
    			Element p = front;
    			front = front.next;
    			if(p == rear) { //队列中只有一个元素
    				rear = null;
    			}
    		}
    		else System.out.println("队列为空");
    	}
    	
    	public Object getHead() {
    		if(front != null) {
    			return front.data;
    		}
    		else return null;
    	}
    	
    	public int getLength() {
    		Element p = front;
    		int length = 0;
    		while(p != null) {
    			p = p.next;
    			length++;
    		}
    		return length;
    	}
    	
    	public boolean isEmpty() {
    		return front == null ? true : false;
    	}
    	
    	public static void main(String[] args) {
    		LinkQueue q = new LinkQueue();
    		System.out.println("队列是否为空:" + q.isEmpty());
    		System.out.println("连续入队=========");
    		for (int i = 0; i < 5; i++) {
    			q.enQueue(i);
    		}
    		System.out.println("队列的长度为: " + q.getLength());
    		System.out.println("队首元素为:" + q.getHead());
    		
    		System.out.println("连续出队=========");
    		for (int i = 0; i < 3; i++) {
    			q.deQueue();
    		}
    		
    		System.out.println("队列是否为空:" + q.isEmpty());
    		System.out.println("队列的长度为: " + q.getLength());
    		System.out.println("队首元素为:" + q.getHead());
    
    	}
    }
    
  • 相关阅读:
    a链接获取方法
    调用百度地图API搜索地名和关键词
    页面定时跳转
    amazeui 上传文件
    数组删除多个元素的方法
    synology git 服务器问题处理
    公司和家里代码文件同步方案: (git和dropbox实现)
    前端项目, 每次运行都需要输入 sudo 的解决方法
    git revert 让提交不再害怕
    建立自己的键盘栈(shortcutkeyStack)
  • 原文地址:https://www.cnblogs.com/lishanlei/p/10707852.html
Copyright © 2011-2022 走看看