• Java数据结构——用双端链表实现队列


    //=================================================
    // File Name       :	LinkQueue_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    //类名:FirstLastList
    //属性:
    //方法:
    class FirstLastList_long{
    	private Link_long first;
    	private Link_long last;
    	
    	public FirstLastList_long() {			//构造函数
    		this.first = null;
    		this.last = null;
    	}
    	
    	public boolean isEmpty(){
    		return (first == null);
    	}
    	
    	public void insertFirst(long dd){		//从链表的头开始插入
    		Link_long newLink = new Link_long(dd);
    		if(isEmpty()){
    			last = newLink;				//不用改变first
    		}
    		newLink.next = first;
    		first = newLink;
    	}
    	
    	public void insertLast(long dd){		//从链表的尾开始插入
    		Link_long newLink = new Link_long(dd);
    		if(isEmpty()){
    			first = newLink;			//不用改变last
    		}else{
    			last.next = newLink;		//在last后面添加新元素,并修改last的位置
    		}
    		last = newLink;					//注意:只有一个元素的时候,插入要把last也赋为newLink
    	}
    	
    	public long deleteFirst(){
    		Link_long temp = first;		//暂存first
    		if(first.next == null){		//如果只有一个元素,把last也赋为null
    			last = null;
    		}
    		first = first.next;			//把next设为first
    		return temp.dData;				//返回原来的first
    	}
    	
    	public void displayList(){
    		System.out.println("List(first-->last):");
    		Link_long current = first;			//用于不断改变位置实现遍历
    		while(current != null){
    			current.displayLink();
    			current = current.next;
    		}
    	}
    	
    }
    
    
    //类名:LinkQueue
    //属性:
    //方法:用双端链表实现队列
    class LinkQueue{
    	private FirstLastList_long theList;
    
    	public LinkQueue() {						//构造函数
    		theList = new FirstLastList_long();		//创建一个双端链表对象
    	}
    	
    	public void push(long j){				//从链表的尾开始插入,新来的元素在尾部
    		theList.insertLast(j);
    	}
    	
    	public long pop(){
    		return theList.deleteFirst();		//从链表的头开始弹出,先进的元素先被弹出
    	}
    	
    	public boolean idEmpty(){
    		return theList.isEmpty();
    	}
    	
    	public void displayQueue(){
    		System.out.println("Queue (front-->rear)");
    		theList.displayList();
    	}
    }
    
    //主类
    //Function        : 	LinkQueue_demo
    public class LinkQueue_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		LinkQueue theQueue = new LinkQueue();
    		theQueue.push(10);
    		theQueue.push(20);
    		theQueue.push(30);
    		theQueue.displayQueue();
    		
    		theQueue.pop();
    		theQueue.pop();
    		theQueue.displayQueue();
    	}
    
    }
    

     

  • 相关阅读:
    Rails生成随机字符串及加解密
    rails generate model/resource/scaffold的区别
    Rails generate的时候不生成assets和test
    rails delegate机制
    React Router V4发布
    react中创建组件的三种方法
    fetch的用法
    Ruby中map, collect,each,select,reject,reduce的区别
    Sublime Theme
    CentOS 升级Python3.X和pip3
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5338949.html
Copyright © 2020-2023  润新知