亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java自定義實現(xiàn)鏈隊列詳解

 更新時間:2017年12月06日 08:41:50   作者:HcJsJqJSSM  
這篇文章主要為大家詳細(xì)介紹了Java自定義實現(xiàn)鏈隊列的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、寫在前面

        數(shù)據(jù)結(jié)構(gòu)中的隊列應(yīng)該是比較熟悉的了,就是先進(jìn)先出,因為有序故得名隊列,就如同排隊嘛,在對尾插入新的節(jié)點,在對首刪除節(jié)點.jdk集合框架也是提供也一個Queue的接口.這個接口代表一個隊列.順序隊列:ArrayBlockingQueue,LinkedBlockingQueue.(上面兩種是足色隊列)還有一種是ConcurentLinkedQueue。
底層的實現(xiàn)由數(shù)組合鏈表兩種的,數(shù)組的實現(xiàn)會有個弊端的,會造成假滿的現(xiàn)象,開始的時候,隊列為空的時候,對首引用變量個對尾的引用變量都為null,隨著刪除隊列的元素,就會發(fā)生front+1,rear等于底層數(shù)組的容量了.在順序的存儲結(jié)構(gòu)中,front總是保存這著隊列中即將出隊列的元素的索引,rear總是保存著即將進(jìn)入隊列的元素的索引.隊列中的元素的個數(shù)就是rear-front的.在順序的隊列中,底層是數(shù)組,所以保存 的數(shù)據(jù)元素是不會改變的,改變的只有rear和front這兩個引用變量.
        這里采用鏈?zhǔn)酱鎯梢杂行У睦每臻g的,就是引用變量要占用額外的空間的.

隊列的常用的操作:

             1:初始化
             2:返回隊列的長度
             3:添加元素
             4:刪除元素
             5:訪問對首的元素
             6:訪問隊列的對尾的元素
             7:判斷隊列是否為空
             8:清空隊列

二、自定義的實現(xiàn)

源碼展示的比較清楚,就不用再多做介紹

public class LinkedQueue<T>{
//自定義鏈隊列--采用非靜態(tài)內(nèi)部類來表示鏈隊列的數(shù)據(jù)節(jié)點
private class Node{
//表示鏈隊列的數(shù)據(jù)節(jié)點 
private T data;
//指向下一個節(jié)點的引用
private Node next;
 @SuppressWarnings("unused")
 public Node(){
 
}
public Node(T data,Node next){
 this.data=data;
 this.next=next;
 }
}
//定義鏈隊列的對首和對尾的引用
 private Node front;
 private Node rear;
 //定義鏈棧的大小
private int size;
 //創(chuàng)建一個空的鏈對列
public LinkedQueue(){
 front=null;
 rear=null;
}
//以確定的元素來創(chuàng)建一個鏈對列,只有一個節(jié)點的
public LinkedQueue(T element){
front=new Node(element,null);
//指向同一個元素
rear=front;
size++;
}
//返回鏈隊列的大小
public int length(){
return size;
}
//返回鏈隊列得對首的元素,不刪除對首的元素
public T elementFront(){
if(!empty()){
 return front.data;
}else{
 return null; 
 
}
}
//訪問隊列的最后一個元素
public T elementRear(){
if(!empty()){
 return rear.data;
 
}else{
 return null; 
} 
}
//返回當(dāng)前的鏈對隊列是否為空
public boolean empty(){
 return size==0;
 }
//清空一個鏈隊列
public void clear(){
 front=null;
 rear=null;
 size=0;
}
//插入鏈隊列一個節(jié)點--對尾
public void add(T element){
 //如果鏈對列為空,就新建一個節(jié)點
 if(front==null){
 rear=new Node(element,null);
 front=rear;
 }else{
 //動態(tài)創(chuàng)建新節(jié)點
 Node newRear=new Node(element,null);
 rear.next=newRear;
 rear=newRear; 
}
size++;
}
//刪除鏈隊列一個節(jié)點,返回刪除后的節(jié)點
public T remove(){
   Node oldFront=front;
   front=front.next;
   oldFront.next=null;
   size--;
   return oldFront.data;
}
//返回隊列
public String toString(){
 //如果鏈隊列為空鏈隊列是
 if(empty()){
 return "[]";
 }else{
 StringBuilder sBuilder=new StringBuilder("[");
 for(Node current=front;current!=null;current=current.next){
 sBuilder.append(current.data.toString()+",");
}
 int len=sBuilder.length();
return sBuilder.delete(len-1, len).append("]").toString();
}
}
public static void main(String[] args) {
 LinkedQueue<String> lQueue=new LinkedQueue<String>();
 lQueue.add("aaa");
 lQueue.add("bbb");
 lQueue.add("ccc");
 lQueue.add("ddd");
System.out.println("返回隊列的頭結(jié)點的數(shù)值:"+lQueue.elementFront());
System.out.println("返回隊列的尾節(jié)點的數(shù)值:"+lQueue.elementRear());
System.out.println(lQueue.length());
System.out.println(lQueue);
}
}  

運行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java私有構(gòu)造函數(shù)作用原理解析

    Java私有構(gòu)造函數(shù)作用原理解析

    這篇文章主要介紹了Java私有構(gòu)造函數(shù)作用原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Servlet實現(xiàn)代理文件下載功能

    Servlet實現(xiàn)代理文件下載功能

    這篇文章主要為大家詳細(xì)介紹了Servlet實現(xiàn)代理文件下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • mybatis新手快速入門以及一些錯誤匯總

    mybatis新手快速入門以及一些錯誤匯總

    這篇文章主要給大家介紹了關(guān)于mybatis新手快速入門以及一些錯誤的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java開發(fā)之spring webflow實現(xiàn)上傳單個文件及多個文件功能實例

    java開發(fā)之spring webflow實現(xiàn)上傳單個文件及多個文件功能實例

    這篇文章主要介紹了java開發(fā)之spring webflow實現(xiàn)上傳單個文件及多個文件功能,結(jié)合具體實例形式分析了spring webflow文件上傳具體操作技巧,需要的朋友可以參考下
    2017-11-11
  • JAVA統(tǒng)計字符串中某個字符出現(xiàn)次數(shù)的方法實現(xiàn)

    JAVA統(tǒng)計字符串中某個字符出現(xiàn)次數(shù)的方法實現(xiàn)

    本文主要介紹了JAVA統(tǒng)計字符串中某個字符出現(xiàn)次數(shù)的方法實現(xiàn),可以循環(huán)使用String的charAt(int index)函數(shù),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • SpringBoot入門之集成Druid的方法示例

    SpringBoot入門之集成Druid的方法示例

    這篇文章主要介紹了SpringBoot入門之集成Druid的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Java中如何靈活獲取excel中的數(shù)據(jù)

    Java中如何靈活獲取excel中的數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于Java中如何靈活獲取excel中的數(shù)據(jù),在日常工作中我們常常會進(jìn)行文件讀寫操作,除去我們最常用的純文本文件讀寫,更多時候我們需要對Excel中的數(shù)據(jù)進(jìn)行讀取操作,需要的朋友可以參考下
    2023-07-07
  • SpringBoot 請求參數(shù)忽略大小寫的實例

    SpringBoot 請求參數(shù)忽略大小寫的實例

    這篇文章主要介紹了SpringBoot 請求參數(shù)忽略大小寫的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java面試題之MD5加密的安全性詳解

    Java面試題之MD5加密的安全性詳解

    MD5 是 Message Digest Algorithm 的縮寫,譯為信息摘要算法,它是 Java 語言中使用很廣泛的一種加密算法。本文將通過示例討論下MD5的安全性,感興趣的可以了解一下
    2022-10-10
  • Java分析講解序列化與字典功能的序列化

    Java分析講解序列化與字典功能的序列化

    在項目開發(fā)地過程中經(jīng)常會用到字典存儲某些可配置的值,但相應(yīng)的也會給開發(fā)帶來復(fù)雜度,比如數(shù)據(jù)庫存儲的值為字典值:0,1,2,3這種類型的值,但是前端頁面卻需要展示為 啟動、禁用、刪除 等中文狀態(tài),下面我們來看兩種解決方案
    2022-06-06

最新評論