자바 링크 의 정의 와 간단 한 인 스 턴 스

7493 단어 Java체인 테이블
자바 링크 의 정의 와 간단 한 인 스 턴 스
자바 실현 링크 는 주로 인용 전달 에 의존 합 니 다.인용 은 주소 로 이해 할 수 있 습 니 다.링크 의 이동 은 재 귀 를 많이 사용 합 니 다.여기 서 저 는 같은 유형의 서로 다른 대상 의 똑 같은 방법 으로 호출 되 는 것 이 재 귀 되 는 것 이 아니 라 는 의문 이 존재 합 니 다.
여기 서 내 가 쓴 것 은 단 방향 링크 이다.

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("   ","jam",46); 
  mytype duo=new mytype("   ","duo",1000); 
  mytype wang=new mytype("  ","jack",21); 
  mytype shi=new mytype("  ","bob",3000); 
  mytype yu=new mytype("  ","keven",30); 

l.add(dsome);//       
  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)+"
"); System.out.println("
"); l.remove(duo); la=l.toArray(); for(int i=0;i<la.length;i++){// System.out.println(la[i].getInfo()); } System.out.println("
"); for(int i=0;i<l.length();i++){ System.out.println(l.get(i).getInfo()); } System.out.println(" :"+l.contains(duo)+"
"); l.clean(); System.out.println(" : "+l.length()+"\t :"+l.isEmpty()); } }

package com.example.java;
public class Link {

private class Node{//    
private Node next; 
private mytype data; 
public Node(mytype data){ 
   this.data=data; 
 } 

public void addNode(Node newNode){//     
   if(this.next==null){ 
    this.next=newNode; 
   }else{ 
    this.next.addNode(newNode); 
   } 
  } 

  public mytype getNode(int index){//         

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

  public boolean iscontain(mytype data){//          
   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){//     
   if(this.data.equals(data)){ 
    previous.next=this.next; 

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


  public void toArrayNode(){//     
    Link.this.Larray[Link.this.foot ++]=this.data; 
    if(this.next!=null){ 
     this.next.toArrayNode(); 
    } 
   }  
}

//        
private Node root; 
private int count=0; 
private int foot; 
private mytype [] Larray;

public void add(mytype data){//     
  if(data==null){ 
   System.out.print("      ,    ");//    
   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){//            
    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){//         data 
    if(data==null) 
     return false; 
    return this.root.iscontain(data); 
   } 

   public void remove(mytype data){//         
    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(){//           
    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){//      (    ) 
  this.name=name; 
  this.people=people; 
  this.age=age; 
 } 
 public boolean equals(mytype data){//         
  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+"
"+ " :"+this.people+"
"+ " :"+this.age; } }
테스트 효 과 는 다음 과 같 습 니 다:

    :7 
   :   
   :dsome 
   :21 
   :   
   :john 
   :45 
   :    
   :jam 
   :46 
   :   
   :jack 
   :21 
   :   
   :bob 
   :3000 
   :    
   :duo 
   :1000 
   :   
   :keven 
   :30 
      :true

     

   :   
   :dsome 
   :21 
   :   
   :john 
   :45 
   :    
   :jam 
   :46 
   :   
   :jack 
   :21 
   :   
   :bob 
   :3000 
   :   
   :keven 
   :30

             
   :   
   :dsome 
   :21 
   :   
   :john 
   :45 
   :    
   :jam 
   :46 
   :   
   :jack 
   :21 
   :   
   :bob 
   :3000 
   :   
   :keven 
   :30 
      :false

           : 0       :true


좋은 웹페이지 즐겨찾기