欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 中鏈表的定義與使用方法

 更新時間:2017年03月24日 17:14:31   作者:湖春  
這篇文章主要介紹了java 中鏈表的定義與使用方法的相關(guān)資料,需要的朋友可以參考下

java 中鏈表的定義與使用方法

Java實現(xiàn)鏈表主要依靠引用傳遞,引用可以理解為地址,鏈表的遍歷多使用遞歸,這里我存在一個疑問同一個類的不同對象的的相同方法的方法內(nèi)調(diào)用算不算遞歸.

這里我寫的是單向鏈表;

實例代碼:

package com.example.java;

public class MyLink {

public static void main(String [] args){ 

Link l=new Link(); 
  mytype[] la; 
  mytype dsome=new mytype("韓敏","dsome",21); 
  mytype shao=new mytype("邵曉","john",45); 
  mytype hua=new mytype("華曉風(fēng)","jam",46); 
  mytype duo=new mytype("余小風(fēng)","duo",1000); 
  mytype wang=new mytype("王秋","jack",21); 
  mytype shi=new mytype("韓寒","bob",3000); 
  mytype yu=new mytype("于冬","keven",30); 

l.add(dsome);//測試增加節(jié)點 
  l.add(shao); 
  l.add(hua); 
  l.add(wang); 
  l.add(shi); 
  l.add(duo); 
  l.add(yu); 

  System.out.println("鏈表長度:"+l.length());//鏈表長度 
  la=l.toArray(); 
  for(int i=0;i<la.length;i++){ 
 System.out.println(la[i].getInfo()); 
 } System.out.println("是否包含多余:"+l.contains(duo)+"\n"); 
  System.out.println("刪除多余后\n"); 
  l.remove(duo); 
  la=l.toArray(); 
  for(int i=0;i<la.length;i++){//轉(zhuǎn)化為數(shù)組之后輸出 
   System.out.println(la[i].getInfo()); 
  }  
System.out.println("\n利用索引方法輸出全部數(shù)據(jù)"); 
  for(int i=0;i<l.length();i++){ 
   System.out.println(l.get(i).getInfo()); 
  }  
System.out.println("是否包含多余:"+l.contains(duo)+"\n"); 
  l.clean(); 
  System.out.println("執(zhí)行清空操作后鏈表長度: "+l.length()+"\t是否為空鏈表:"+l.isEmpty()); 
}
}


package com.example.java;
public class Link {

private class Node{//內(nèi)部類 
private Node next; 
private mytype data; 
public Node(mytype data){ 
   this.data=data; 
 } 

public void addNode(Node newNode){//增加節(jié)點 
   if(this.next==null){ 
    this.next=newNode; 
   }else{ 
    this.next.addNode(newNode); 
   } 
  } 

  public mytype getNode(int index){//按照角標(biāo)返回數(shù)據(jù) 

   if(index==Link.this.foot++){ 
    return this.data; 
   }else{ 
    return this.next.getNode(index); 
   } 
  } 

  public boolean iscontain(mytype data){//判斷是否含有該數(shù)據(jù) 
   if(this.data.equals(data)){ 
    return true; 
   }else{ 
    if(this.next!=null){ 
     return this.next.iscontain(data); 
    }else{ 
     return false; 
    } 
   } 
  } 

  public void removeNode(Node previous,mytype data){//刪除節(jié)點 
   if(this.data.equals(data)){ 
    previous.next=this.next; 

   }else{ 
    this.next.removeNode(this,data); 
   } 
  } 


  public void toArrayNode(){//轉(zhuǎn)化數(shù)組 
    Link.this.Larray[Link.this.foot ++]=this.data; 
    if(this.next!=null){ 
     this.next.toArrayNode(); 
    } 
   }  
}

//內(nèi)部類定義完畢 
private Node root; 
private int count=0; 
private int foot; 
private mytype [] Larray;

public void add(mytype data){//增加節(jié)點 
  if(data==null){ 
   System.out.print("增加數(shù)據(jù)失敗,數(shù)據(jù)為空");//測試用 
   return; 
  } 
  Node newNode=new Node(data); 
  if(this.root==null){ 
   this.root=newNode; 
   this.count++; 
  }else{ 
   this.root.addNode(newNode); 
   this.count++; 
  } 
 } 

 public int length(){//鏈表長度 
  return this.count; 
 } 

 public boolean isEmpty(){//是否為空鏈表 
  if(this.count==0)return true; 
  else return false; 
 } 

 public void clean(){//清空鏈表 
  this.root=null; 
  this.count=0; 
 } 

 public mytype get(int index){//索引返回節(jié)點所存的數(shù)據(jù) 
    if(index>=this.count||index<0){ 
     System.out.print("越界錯誤");//測試用 
     return null; 
    }else{ 
     this.foot=0; 
     return this.root.getNode(index); 
    } 
   } 

   public boolean contains(mytype data){//判斷鏈表數(shù)據(jù)是否含data 
    if(data==null) 
     return false; 
    return this.root.iscontain(data); 
   } 

   public void remove(mytype data){//刪除指定數(shù)據(jù)節(jié)點 
    if(this.contains(data)){ 
     if(this.root.data.equals(data)){ 
      this.root=this.root.next; 
      this.count--;   
     } 
     else{ 
      this.count--; 
      this.root.next.removeNode(root,data); 
     } 
    }else{ 
     System.out.print("刪除錯誤");//測試用     
    } 
   } 

   public mytype[] toArray(){//把鏈表轉(zhuǎn)化成對象數(shù)組 
    if(this.count==0){ 
     return null; 
    } 
     this.foot=0; 
     this.Larray=new mytype [this.count]; 
     this.root.toArrayNode(); 
     return this.Larray;     
   }     
}


package com.example.java;

public class mytype {

private String name; 
private String people; 
private int age;

public mytype(String name,String people,int age){//鏈表中的數(shù)據(jù)(可自定義) 
  this.name=name; 
  this.people=people; 
  this.age=age; 
 } 
 public boolean equals(mytype data){//判斷數(shù)據(jù)是否相同 
  if(this==data){ 
   return true; 
  } 
  if(data==null){ 
   return false; 
  } 
  if(this.name.equals(data.name)&&this.people.equals(data.people)&&this.age==data.age){ 
   return true; 
  }else{ 
   return false; 
  } 
 }
public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
public String getPeople() {
  return people;
}
public void setPeople(String people) {
  this.people = people;
}
public int getAge() {
  return age;
}
public void setAge(int age) {
  this.age = age;
} 

public String getInfo(){ 
  return "名字 :"+this.name+"\n"+ 
      "人物 :"+this.people+"\n"+ 
      "年齡 :"+this.age; 
 }   
}

測試效果如下:

鏈表長度:7 
名字 :韓敏 
人物 :dsome 
年齡 :21 
名字 :邵曉 
人物 :john 
年齡 :45 
名字 :華曉風(fēng) 
人物 :jam 
年齡 :46 
名字 :王秋 
人物 :jack 
年齡 :21 
名字 :韓寒 
人物 :bob 
年齡 :3000 
名字 :余小風(fēng) 
人物 :duo 
年齡 :1000 
名字 :于冬 
人物 :keven 
年齡 :30 
是否包含多余:true

刪除多余后

名字 :韓敏 
人物 :dsome 
年齡 :21 
名字 :邵曉 
人物 :john 
年齡 :45 
名字 :華曉風(fēng) 
人物 :jam 
年齡 :46 
名字 :王秋 
人物 :jack 
年齡 :21 
名字 :韓寒 
人物 :bob 
年齡 :3000 
名字 :于冬 
人物 :keven 
年齡 :30

利用索引方法輸出全部數(shù)據(jù) 
名字 :韓敏 
人物 :dsome 
年齡 :21 
名字 :邵曉 
人物 :john 
年齡 :45 
名字 :華曉風(fēng) 
人物 :jam 
年齡 :46 
名字 :王秋 
人物 :jack 
年齡 :21 
名字 :韓寒 
人物 :bob 
年齡 :3000 
名字 :于冬 
人物 :keven 
年齡 :30 
是否包含多余:false

執(zhí)行清空操作后鏈表長度: 0 是否為空鏈表:true

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Java實現(xiàn)AI五子棋游戲的示例代碼

    Java實現(xiàn)AI五子棋游戲的示例代碼

    本文只是介紹五子棋AI的實現(xiàn),最終的成品只是一個?AI?接口,并不包括?GUI,且不依賴?GUI,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下
    2022-09-09
  • 使用MDC實現(xiàn)日志鏈路跟蹤

    使用MDC實現(xiàn)日志鏈路跟蹤

    這篇文章主要介紹了使用MDC實現(xiàn)日志鏈路跟蹤,在微服務(wù)環(huán)境中,我們經(jīng)常使用Skywalking、CAT等去實現(xiàn)整體請求鏈路的追蹤,但是這個整體運維成本高,架構(gòu)復(fù)雜,我們來使用MDC通過Log來實現(xiàn)一個輕量級的會話事務(wù)跟蹤功能,下面就來看看具體的過程吧,需要的朋友可以參考一下
    2022-01-01
  • java  使用URLDecoder和URLEncoder對中文進(jìn)行處理

    java 使用URLDecoder和URLEncoder對中文進(jìn)行處理

    這篇文章主要介紹了java 使用URLDecoder和URLEncoder對中文進(jìn)行處理的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 基于Java實現(xiàn)五子棋小游戲(附源碼)

    基于Java實現(xiàn)五子棋小游戲(附源碼)

    這篇文章主要為大家介紹了如何通過Java實現(xiàn)簡單的五子棋游戲,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java游戲開發(fā)有一定幫助,需要的可以參考一下
    2022-11-11
  • Linux環(huán)境卸載Centos7自帶的OpenJDK和安裝JDK1.8圖文教程

    Linux環(huán)境卸載Centos7自帶的OpenJDK和安裝JDK1.8圖文教程

    CentOS系統(tǒng)是開發(fā)者常用的Linux操作系統(tǒng),安裝它時會默認(rèn)安裝自帶的舊版本的OpenJDK,但在開發(fā)者平時開發(fā)Java項目時還是需要完整的JDK,這篇文章主要給大家介紹了關(guān)于Linux環(huán)境卸載Centos7自帶的OpenJDK和安裝JDK1.8的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • Spring\SpringBoot配置連接數(shù)據(jù)庫的方法

    Spring\SpringBoot配置連接數(shù)據(jù)庫的方法

    最近在學(xué)習(xí)SpringBoot,第一步就是要配置數(shù)據(jù)庫,本文詳細(xì)的介紹了Spring\SpringBoot配置連接數(shù)據(jù)庫的方法,有需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Java操作redis設(shè)置第二天凌晨過期的解決方案

    Java操作redis設(shè)置第二天凌晨過期的解決方案

    這篇文章主要介紹了Java操作redis設(shè)置第二天凌晨過期的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java this的應(yīng)用方法解析

    java this的應(yīng)用方法解析

    這篇文章主要介紹了java this的應(yīng)用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Mybatis 中如何判斷集合的size

    Mybatis 中如何判斷集合的size

    這篇文章主要介紹了在Mybatis中判斷集合的size操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java實現(xiàn)學(xué)生成績輸出到磁盤文件的方法詳解

    Java實現(xiàn)學(xué)生成績輸出到磁盤文件的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實現(xiàn)將學(xué)生成績輸出到磁盤文件的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-11-11

最新評論