• 队列的链式存储方式的实现(Java语言描述)


    链队列的结构示意图:

    Java实现队列 - 队列内部使用链式存储结构

    先进先出。

    QueueInterface.java//操作方法接口

    package 队列的实现;
    
    public interface QueueInterface {
    	public void enQueue(Object t);
    	public Object delQueue();
    	public int size();
    	public boolean isEmpty();
    	public Object head();
    	public void clear();
    
    }
    


     

    Node.java//节点类

    package 队列的实现;
    
    public class Node<T> {
    	T data;
    	Node next;
    }
    

    Queue.java//队列的定义和接口实现

    package 队列的实现;
    
    public class Queue<T> implements QueueInterface{
        Node<T> front,rear;//对头指针,队尾指针
        //构造一个空的链队列
        public Queue(){
        	front = new Node<T>();
        	rear = new Node<T>();
        	rear = front;
        }
    	//实现接口里的操作
        public boolean isEmpty(){
    		if(front == rear)
    			return true;
    		else
    			return false;
    	}
        public int size(){
        	int i = 0;
        	Node<T> p = front.next;
        	while(p != null){
        		p = p.next;
        		i++;
        	}
        	return i;
        }
        public Object head(){
        	if(this.isEmpty() == false)
        	return front.next.data;
        	System.out.println("队列为空,不存在队头元素!");
        	return 0;
        }
    	public void enQueue(Object obj){
    		Node<T> p = new Node<T>();
    		p.data = (T)obj;
    		rear.next = p;
    		p.next = null;
    		rear = p;
    	}
    	public Object delQueue(){
    		T t;
    		Node<T> p = new Node<T>();
    		if(this.isEmpty() == true){
    			System.out.println("队列为空,不能进行删除操作!");
    			return 0;
    		}
    		else{
    			p = front.next;
    			front.next = p.next;
    			if(p.next == null)//出队后队列为空
    				rear = front;
    			t = p.data;
    			p = null;
    			return t;
    		}
    	}
    	public void clear(){
    		front = rear;
    	}
    
    }
    

    TestQueue.java//测试类

    package 队列的实现;
    
    public class TestQueue {
    
    	public static void main(String[] args) {
    		Queue<Integer> queue = new Queue<Integer>();
    		for(int i=1; i<=10; i++){
    			queue.enQueue(i);
    		}
    		System.out.println(queue.size());
    		System.out.println(queue.isEmpty());
    		for(int i=1; i<=10; i++){
    			System.out.print(queue.delQueue() + " ");
    		}
    		System.out.println();
    		System.out.println(queue.isEmpty());
    		for(int i=1; i<=10; i++){
    			queue.enQueue(i);
    		}
    		System.out.println(queue.isEmpty());
    		queue.clear();
    		System.out.println(queue.isEmpty());
    
    	}
    
    }
    


    实现结果:

    10
    false
    1 2 3 4 5 6 7 8 9 10
    true
    false
    true


     

  • 相关阅读:
    centos7 安装配置手册
    常用mysql统计信息(mysql5.6)
    yum将需要安装的软件依赖下载到本地
    impala使用指南
    redis集群配置
    VIM
    Vim自动补全插件----YouCompleteMe安装与配置
    vim中自动格式化代码
    vscode_插件_shell格式化工具安装
    Anaconda+vscode 搭建开发环境
  • 原文地址:https://www.cnblogs.com/wxisme/p/4363787.html
Copyright © 2020-2023  润新知