단일 연결리스트의 자바 구현 및 관련 작업 (버전 3)

   더 결합 객체 지향 사고 : 둘째 패키지 : 처음 두 장점은 단일 사슬 클래스의 내부의 방법으로 버전 3, 너무있다. 내부 노드 클래스 노드 링크 통해 Objectlist 정의 노드 생성 및 조작을 수행하는 노드, 책임 통해 Objectlist 내부 접합 노드와 관련된 동작들을 수행 할 책임이있다. 다음과 같이 코드입니다 :

링크 카테고리 :
가져 오기 java.net.Inet4Address;
/ **
 * 이것은 훨씬 더 (노드로 구성된리스트) 함께 부착 된 사고 객체 지향 통해 Objectlist 노드 클래스의 내부로 작성된 클래스 목록,이 집단 소송이 동작 노드,
 * 노드 운영 방법 정의
 * /
공용 클래스 링크 {
    
    개인 노드 루트; // 첫 번째 노드 설정
    개인 INT 카운트 = 0;의 길이를 계산하는 데 사용 // 연결리스트
    개인 INT 지수 = 0; // 인덱스 정의
    개인 문자열 [] returnArray // 출력 링크 된리스트 데이터의 배열을 정의
    
    공개 문자열 []를 toArray () {
        IF (this.root == NULL) {
            는 null;
        }
        this.index = 0;
        this.returnArray = 새로운 새 문자열 [this.count]
        this.root.toArrayNode는 ()
        ; this.returnArray를 반환
    }
    
    방법을 삭제 //
    {(문자열 데이터)를 공용 공극을 제거
        IF (this.contains (데이터)) {
            (data.equals (this.root.data)) {IF
                this.root = this.root.next;
            }
        }는 사람이 {
            this.root.next.removeNode (this.root, 데이터);
            //이 경우 다음 노드는이의 노드입니다. 루트
        } this.count--;
    }
    
    // 수정 방법
    공개 무효 세트 (INT 지수, 문자열 데이터) {
        IF (. 인덱스> (-this.count 1) || 인덱스 <0) {
            반환;
        }
        this.index = 0 ;
        this.root.setNode (지표 데이터)
    }

    / **
     * 노드 정보 취득
     * /
    공용 문자열 GET INT (인덱스) {
        IF를 (인덱스> (-this.count 1) || 인덱스 <0). {
            반환 값 null;
        }
        this.index = 0;
        this.root.getNode (인덱스)를 반환;
    }

    / **
     ** 포인터 노드가 제공 방법
     * /
    공개 무효 setIndex (INT 인덱스) {
        this.index = 인덱스;
    }
    
    // 결과 목록 길이
    공개 INT 크기 () {
        this.count를 돌려는;
    }
    
    // 목록이 비어 있는지 여부를 판단한다
    () {공중 부울 IsEmpty 함수
        ; this.count == 0 반환
    }
    
    
    변속기에있어서, 상기 방법 containsNode 노드 클래스를 호출을 // 데이터가 있는지 여부를 판단
    공개 부울은 (문자열 데이터)를 포함 {
        만약에 (데이터 == 널 || this.root == NULL) {
            ; false로 복귀가
        }
        this.root.containsNode 리턴 (데이터);
    }
    
    공공 링크 () {
    }
    메소드 호출 노드 // 클래스 노드 증가

    // 증가는 노드는 고려 있도록 노드가이 작업에 대한 노드 것을 주목해야한다
    공공 무효 추가 (문자열 데이터) {
        IF (데이터 == NULL) {
            ; 반환
        }
        = 노드 노드 새로운 새로운 노드 (데이터)
        this.count ++; // 노드를 만들 ++ 세어
        
        IF (this.root == NULL) {
            this.root = 노드;
        }는 {다른
            this.root.addNode (노드);
        }
        
    }
    

// * ************************************************** ***************
    / **
     **이 노드 클래스이며, 이것의 역할은 노드의 클래스를 만드는 것입니다
     * /
    개인 노드 클래스 {
        개인 데이터 문자열을,
        개인 다음 노드는 ;
        
        // 구성 매개 변수가
        {공공 노드 (문자열 데이터)
            데이터 = this.data;
        }
        
        인수없이 // 생성자
        공개 노드 () {
        }
    
        
        / **
         연결리스트 데이터로 배열 출력 *
         * /
        공개 무효 toArrayNode () {
            Link.this.returnArray [Link.this.index ++ = this.data;
            IF (this.next = NULL!) {
                this.next.toArrayNode ()
            }
            
        }

        // 처음 (링크) = 이전 호출 this.root = Link.root.next이 본
        // 번째 이전 = this.root.next 통화 시간 (노드) = Link.root.next.next.next은이
        공개 무효가 removeNode (이전 노드 문자열 데이터) {
            IF (this.data.equals (데이터)) {
                previous.next = this.next;
                
            다른 {}
                this.next.removeNode (이전의 데이터); this.next 부모 노드가 //이 본
            }
            
        }
        
        / **
         * 노드 정보 설정 방법
         * /
        공개 무효 setNode (INT 인덱스 데이터 문자열) {
            IF (인덱스 == Link.this.index ++) {
                 this.data = 데이터;
            }는 {다른
                this.next.setNode (지표 데이터);
                }
        }
        
        / **
         ** 노드 정보 취득 방법
         * /
        공용 문자열을는 getNode (INT 인덱스) {
            경우 (인덱스 == Link.this.index ++) {
                this.data 반환;
            }는 다른 {
                this.next.getNode 창 (인덱스);
                }
        }
        
        / **
         * 검색 방법은 번호가 존재하는지 여부를 판정한다
         * /
        공용 부울 containsNode (문자열 데이터) {
            (data.equals은 (는 this.data)) {IF
                ; true로 반환
            } {다른
                IF (this.next = 널!) {
                    this.next.containsNode (데이터);
                }는 다른 {
                    false로 반환;
                }
            }
            
        }
        / **
         * 증가 노드
         * /
        // 첫 번째 호출 (링크) : = 이것은 Link.root
        번째 호출 (노드) // :이 Link.root.next를 =
        공공 무효 addNode 명 (노드 노드) {
            경우 (this.next == NULL의) {
                this.next = 노드;
            사용한다} else {
                this.next.addNode (노드);
            }
        }
        
        공공 문자열 GetData의 () {
            반환 데이터;
        }
        
        공개 무효 사항 setData (문자열 데이터) {
            this.data = 데이터;
        }
    
        공공 노드 GETNEXT () {
            다음 반환;
        }
        
        공공 공극 setNext (다음 노드) {
            this.next = 다음;
        }
    }
}
LinkeText类:

/ **
 *
 * /
패키지 lianbiaoDemo03;

공용 클래스 링크 텍스트 {

    공공 정적 무효 메인 (문자열 []에 args) {
        링크 링크 링크 새로운 새로운 = ();
        link.add ( "박 1.");
        link.add ( "박 2 ");
        link.add ("박 3 ").
        link.add ("박 4 ").
        link.add ("박 5 ").
    //에서 System.out.println (link.size () )
    //에서 System.out.println (link.isEmpty ());
    //에서 System.out.println (link.contains ( "박 인형 4 '));
    //에서 System.out.println (link.get (1 ));
    // link.set (1, "원숭이 왕");
    //에서 System.out.println (link.get (1));
    // link.remove ( "조롱박 인형 3");
    // 시스템.out.println (link.get (2));
        문자열 [] S = link.toArray ();
        대해 INT (I = 0; I <s.length; I ++) {
            에서 System.out.println (S [I]);
        }
    }
}

추천

출처www.cnblogs.com/had1314/p/11183972.html