zoukankan      html  css  js  c++  java
  • java实现队列

    队列是一种重要的数据结构,在排队论和算法设计中有很重要的应用,其实队列也是一种链表,它只允许在表的始端出表(dequeue),在表的末端入表(enqueue),下边是队列的java实现。

    //队列是一种重要的数据结构,主要应用是资源的排队(例如打印机),需要注意的是要利用循环数据来存储数据
    class Queue {
    	private int front;
    	private int back;
    	private int size;
    	private Object[] data;
    	
    	public Queue(){
    		data=new Object[10];
    	}
    	
    	public int getSize(){
    		return size;
    	}
    	
    	public Object dequeue(){
    		Object o=null;
    		if(size>0){
    			size--;
    			o=data[front];
    			data[front]=null;
    			front=(front>data.length-1)?0:front+1;
    		}
    		return o;
    	}
    	
    	public void enqueue(Object o){
    		if(size>=data.length){
    			Object[] newData=new Object[data.length*2];
    			for(int i=0;i<data.length;++i){
    				newData[i]=data[i];
    			}
    			data=newData;
    		}
    		data[back]=o;
    		back++;
    		size++;
    	}
    	
    	public String toString(){
    		StringBuffer str=new StringBuffer();
    		for(int i=0;i<data.length;i++){
    			Object o=data[i];
    			if(o!=null){
    				str.append(o+" ");
    			}			
    		}
    		return str.toString();
    	}
    }
    

    测试方法如下:

    public static void main(String[] args){
    		Queue queue=new Queue();
    		for(int i=0;i<15;i++){
    			queue.enqueue("sunzhenxing"+i);
    		}
    		System.out.println(queue);
    		System.out.println(queue.getSize());
    		System.out.println("----------------------");
    		for(int i=0;i<10;i++){
    			queue.dequeue();
    		}
    		System.out.println(queue);
    		System.out.println(queue.getSize());
    		System.out.println("----------------------");
    		for(int i=0;i<5;i++){
    			queue.enqueue("sunhailong"+i);
    		}
    		System.out.println(queue);
    		System.out.println(queue.getSize());
    }
    

    输出是:

    sunzhenxing0 sunzhenxing1 sunzhenxing2 sunzhenxing3 sunzhenxing4 sunzhenxing5 sunzhenxing6 sunzhenxing7 sunzhenxing8 sunzhenxing9 sunzhenxing10 sunzhenxing11 sunzhenxing12 sunzhenxing13 sunzhenxing14
    15
    ----------------------
    sunzhenxing10 sunzhenxing11 sunzhenxing12 sunzhenxing13 sunzhenxing14
    5
    ----------------------
    sunzhenxing10 sunzhenxing11 sunzhenxing12 sunzhenxing13 sunzhenxing14 sunhailong0 sunhailong1 sunhailong2 sunhailong3 sunhailong4
    10

  • 相关阅读:
    URLEncode解决url中有特殊字符的问题
    监控系统概览
    SpringBoot 上传文件夹
    关于postgresql报 ERROR: XXX does not exist
    postgresql学习
    git学习
    学习博客
    面试准备
    jvm
    线程池面试题
  • 原文地址:https://www.cnblogs.com/sunzhenxing19860608/p/1964283.html
Copyright © 2011-2022 走看看