最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java數據結構之實現雙向鏈表的示例

 更新時間:2014年03月21日 09:14:14   作者:  
這篇文章主要介紹了java數據結構實現雙向鏈表的示例,需要的朋友可以參考下

復制代碼 代碼如下:

/**
 * 雙向鏈表的實現
 * @author Skip
 * @version 1.0
 */
public class DoubleNodeList<T> {
 //節(jié)點類
 private static class Node<T>{
  Node<T> perv;  //前節(jié)點
  Node<T> next;  //后節(jié)點
  T data;    //數據

  public Node(T t){
   this.data = t;
  }
 }
 private Node<T> head;  //頭節(jié)點
 private Node<T> last;  //尾節(jié)點
 private Node<T> other;  //備用節(jié)點存放臨時操作
 private int length;  //鏈表長度

 /**
  * 無參構造
  */
 public DoubleNodeList(){
  head = new Node<T>(null);
  last = head;
  length = 0;
 }

 /**
  * 初始化時創(chuàng)建一個節(jié)點
  * @param data 數據
  */
 public DoubleNodeList(T data){
  head = new Node<T>(data);
  last = head;
  length = 1;
 }

 /**
  * 添加一個節(jié)點
  * @param data 添加的數據
  */
 public void add(T data){
  if(isEmpty()){
   head = new Node<T>(data);
   last = head;
   length++;
  }else{
   //尾插法
   other = new Node<T>(data);
   other.perv = last;
   last.next = other;
   last = other;
   length++;
  }
 }

 /**
  * 在指定數據后插入一個節(jié)點
  * @param data 指定的數據
  * @param insertData 插入的數據
  * @return 插入成功返回true,不成功返回false
  */
 public boolean addAfert(T data , T insertData){
  other = head;
  while(other != null){
   if(other.data.equals(data)){
    Node<T> t = new Node<T>(insertData);
    t.perv = other;
    t.next = other.next;
    other.next = t;
    //判斷是否在最后一個節(jié)點后添加節(jié)點
    if(t.next==null){
     last = t;
    }
    length++;
    return true;
   }
   other = other.next;
  }
  return false;
 }

 /**
  * 在指定數據前插入一個節(jié)點
  * @param data 指定的數據
  * @param insertData 插入的數據
  * @return 插入成功返回true,不成功返回false
  */
 public boolean addBefore(T data, T insertData){
  other = head;
  while(other != null){
   if(other.data.equals(data)){
    Node<T> t = new Node<T>(insertData);
    t.perv = other.perv;
    t.next = other;
    other.perv.next = t;
    length++;
    return true;
   }
   other = other.next;
  }
  return false;
 }

 /**
  * 獲得索引處的數據
  * @param index 索引
  * @return 數據
  */
 public T get(int index){
  if(index>length || index<0){
   throw new IndexOutOfBoundsException("索引越界:"+index);
  }
  other = head;
  for(int i=0;i<index;i++){
   other = other.next;
  }
  return other.data;
 }

 /**
  * 新值替換舊值
  * @return 成功為true,未找到為false
  */
 public boolean set(T oldValue,T newValue){
  other = head;
  while(other!=null){
   if(other.data.equals(oldValue)){
    other.data = newValue;
    return true;
   }
   other = other.next;
  }
  return false;
 }

 /**
  * 移除指定的元素
  * @param data 需要移除的元素
  * @return 不存在為false,成功為true
  */
 public boolean remove(T data){
  other = head;
  while(other != null){
   if(other.data.equals(data)){
    other.perv.next = other.next;
    length--;
    return true;
   }
   other = other.next;
  }
  return false;
 }

 /**
  * 鏈表中是否包含此元素
  * @return 包含為true,不包含為false
  */
 public boolean contains(T data){
  other = head;
  while(other != null){
   if(other.data.equals(data)){
    return true;
   }
   other = other.next;
  }
  return false;
 }

 /**
  * 獲得最后一個節(jié)點的數據
  * @return 最后一個節(jié)點的數據
  */
 public T getLast(){
  return last.data;
 }

 /**
  * 獲得第一個節(jié)點的數據
  * @return 第一個節(jié)點的數據
  */
 public T getFirst(){
  return head.data;
 }

 /**
  * 獲得鏈表的長度
  * @return 長度
  */
 public int getSize(){
  return length;
 }

 /**
  * 是否為空鏈表
  * @return 空鏈表為true,非空鏈表為false
  */
 public boolean isEmpty(){
  return length==0;
 }

 /**
  * 清空鏈表
  */
 public void clear(){
  head = null;
  length = 0;
 }

 /**
  * 輸出鏈表內所有節(jié)點
  */
 public void printList(){
  if(isEmpty()){
   System.out.println("空鏈表");
  }else{
   other = head;
   for(int i=0;i<length;i++){
    System.out.print(other.data+" ");
    other = other.next;
   }
   System.out.println();
  }
 }
}

相關文章

  • 使用JPA單項一對多外鍵關聯

    使用JPA單項一對多外鍵關聯

    這篇文章主要介紹了使用JPA單項一對多外鍵關聯,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java對指定目錄下文件讀寫操作介紹

    java對指定目錄下文件讀寫操作介紹

    本文將詳細介紹java對指定目錄下文件的讀寫功能實現,需要的朋友可以參考下
    2012-11-11
  • spring中WebClient如何設置連接超時時間以及讀取超時時間

    spring中WebClient如何設置連接超時時間以及讀取超時時間

    這篇文章主要給大家介紹了關于spring中WebClient如何設置連接超時時間以及讀取超時時間的相關資料,WebClient是Spring框架5.0引入的基于響應式編程模型的HTTP客戶端,它提供一種簡便的方式來處理HTTP請求和響應,需要的朋友可以參考下
    2024-08-08
  • Java如何替換第一個和最后一個字符串

    Java如何替換第一個和最后一個字符串

    這篇文章主要介紹了Java如何替換第一個和最后一個字符串的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot整合Sa-Token實現登錄認證的示例代碼

    SpringBoot整合Sa-Token實現登錄認證的示例代碼

    本文主要介紹了SpringBoot整合Sa-Token實現登錄認證的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring控制Bean加載順序的操作方法

    Spring控制Bean加載順序的操作方法

    正常情況下,Spring 容器加載 Bean 的順序是不確定的,那么我們如果需要按順序加載 Bean 時應如何操作?本文將詳細講述我們如何才能控制 Bean 的加載順序,需要的朋友可以參考下
    2024-05-05
  • Struts1和struts2的區(qū)別_動力節(jié)點Java學院整理

    Struts1和struts2的區(qū)別_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了Struts1和struts2的區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • SpringBoot優(yōu)雅的進行全局異常處理的實現步驟

    SpringBoot優(yōu)雅的進行全局異常處理的實現步驟

    在軟件開發(fā)的世界里,異常處理是保證系統(tǒng)穩(wěn)定性和用戶體驗的關鍵因素之一,尤其是在構建基于微服務架構的應用時,SpringBoot提供了一套強大的工具來幫助開發(fā)者管理這些異常,所以本文給大家介紹了SpringBoot如何優(yōu)雅的進行全局異常處理,需要的朋友可以參考下
    2025-02-02
  • SpringBoot實現國密SM4加密解密的使用示例

    SpringBoot實現國密SM4加密解密的使用示例

    在商用密碼體系中,SM4主要用于數據加密,本文就來介紹一下SpringBoot實現國密SM4加密解密的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 分布式之全面了解Kafka的使用與特性

    分布式之全面了解Kafka的使用與特性

    Kafka?是我工作多年使用最多的消息中間件?,特點是擁有巨大吞吐量(數百萬/秒),作為當下最流行的分布式,可水平擴展,可容錯的“消息系統(tǒng)”,下面跟隨小編看下分布式之全面了解Kafka的使用與特性
    2021-11-11

最新評論

通辽市| 合江县| 体育| 阿鲁科尔沁旗| 蒲江县| 天祝| 屏南县| 正镶白旗| 临沂市| 四子王旗| 体育| 额敏县| 镇雄县| 东阿县| 手机| 临湘市| 海伦市| 玉树县| 镇远县| 霞浦县| 定边县| 龙井市| 保山市| 平原县| 阆中市| 准格尔旗| 芷江| 灵宝市| 牡丹江市| 那坡县| 寿阳县| 成都市| 苗栗县| 分宜县| 乌鲁木齐县| 福泉市| 石家庄市| 安岳县| 三穗县| 安宁市| 宣汉县|