一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java 鏈表的定義與簡(jiǎn)單實(shí)例

Java 鏈表的定義與簡(jiǎn)單實(shí)例

2020-11-24 15:03Java之家 Java教程

這篇文章主要介紹了 Java 鏈表的定義與簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下

 Java 鏈表的定義與簡(jiǎn)單實(shí)例

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

這里我寫的是單向鏈表;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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);//測(cè)試增加節(jié)點(diǎn)
  l.add(shao);
  l.add(hua);
  l.add(wang);
  l.add(shi);
  l.add(duo);
  l.add(yu);
 
  System.out.println("鏈表長(zhǎng)度:"+l.length());//鏈表長(zhǎng)度
  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í)行清空操作后鏈表長(zhǎng)度: "+l.length()+"\t是否為空鏈表:"+l.isEmpty());
}
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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é)點(diǎn)
   if(this.next==null){
    this.next=newNode;
   }else{
    this.next.addNode(newNode);
   }
  }
 
  public mytype getNode(int index){//按照角標(biāo)返回?cái)?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é)點(diǎn)
   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();
    }
   
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//內(nèi)部類定義完畢
private Node root;
private int count=0;
private int foot;
private mytype [] Larray;
 
public void add(mytype data){//增加節(jié)點(diǎn)
  if(data==null){
   System.out.print("增加數(shù)據(jù)失敗,數(shù)據(jù)為空");//測(cè)試用
   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(){//鏈表長(zhǎng)度
  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é)點(diǎn)所存的數(shù)據(jù)
    if(index>=this.count||index<0){
     System.out.print("越界錯(cuò)誤");//測(cè)試用
     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é)點(diǎn)
    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("刪除錯(cuò)誤");//測(cè)試用    
    }
   }
 
   public mytype[] toArray(){//把鏈表轉(zhuǎn)化成對(duì)象數(shù)組
    if(this.count==0){
     return null;
    }
     this.foot=0;
     this.Larray=new mytype [this.count];
     this.root.toArrayNode();
     return this.Larray;    
   }    
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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;
 }  
}

測(cè)試效果如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
鏈表長(zhǎng)度: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í)行清空操作后鏈表長(zhǎng)度: 0 是否為空鏈表:true
 

原文鏈接:http://blog.csdn.net/google_huchun/article/details/52824024

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年人免费观看 | 亚洲一区二区精品视频 | 别停好爽好深好大好舒服视频 | 狠狠躁夜夜躁人人爽天天miya | 国产精品一区二区不卡的视频 | 色综合91久久精品中文字幕 | 欧美高清日韩 | 国产麻豆传媒在线观看 | 摸逼小说 | youjizzxxx69日本 | 免费一区在线 | 国产大片免费在线观看 | 成年人在线观看免费视频 | 国外欧美一区另类中文字幕 | 大肚孕妇的高h辣文 | 亚洲国产精品一区二区三区久久 | 亚洲国产网址 | 亚洲 日韩 国产 制服 在线 | 狠狠香蕉 | 日韩免费在线视频观看 | 97精品国产自在现线免费观看 | 大陆性出航| 天天gan| 羞羞色男人的天堂伊人久久 | 天天爱天天操天天射 | 精品欧美一区二区三区在线观看 | 国产麻豆91欧美一区二区 | 国产专区视频在线观看 | 韩国日本在线观看 | 日本韩国推理片免费观看网站 | 狠狠五月天中文字幕 | 国自产在线精品免费 | 啊哈用力cao我 | 男人插曲女人身体 | 99在线精品日韩一区免费国产 | 色综色天天综合网 | 久久精品国产色蜜蜜麻豆国语版 | 西施打开双腿下面好紧 | 视频免费观看在线播放高清 | 日韩欧免费一区二区三区 | 顶级尤物极品女神福利视频 |