알고리즘 - 단일 목록 노드 삭제 및 삽입

패키지 com.demo.calculate; 

수입에는 android.app.Activity; 
수입 android.os.Bundle; 
수입 android.view.View에서; 

수입 com.demo.calculate.bean.LinkedList; 

공용 클래스 LinkArrayActivity는 활동 {확장 
    @Override가 
    무효에서 onCreate (번들 savedInstanceState) {보호 
        super.onCreate (savedInstanceState를); 
        된 setContentView (R.layout.activity_chain); 
        findViewById를 (R.id.btn_createSingleChain) .setOnClickListener (새 View.OnClickListener () { 
            @Override 
            공공 무효 온 클릭 (보기 V) { 
                LinkedList의 LinkedList의 = 새 LinkedList의 (); 
                linkedList.insertNode (0,2); 
                linkedList.insertNode (1,3);
                linkedList.insertNode (2,4); 
                linkedList.insertNode (1,6); 
                linkedList.insertNode (4,7); 
                linkedList.removeNode (5); 
                linkedList.show (); 
            } 
        }); 
    } 
}
com.demo.calculate.bean 패키지, 

가져 오기 android.util.Log; 

/ ** 
 * 만약 삽입 및 노드의 삭제를 찾을 필요가있을 때 
 * 
 * @author의 XJZ 
 * / 
공용 클래스 LinkedList의 { 
    개인 노드 헤드, 
    마지막으로 개인 노드를, 
    개인 지능 크기; 

    / ** 
     * @param 지수 
     * / 
    // 노드 삽입 
    공공 무효의 insertNode (INT 인덱스, 데이터를 INT) { 
        IF (인덱스 <0 || 인덱스> 크기) { 
            제 ( "범위를 넘어리스트 노드!") IndexOutOfBoundsException가 새로운 새를 던져 ; 
        } 
        // 노드에 삽입되는 
        노드 = 새로운 새 insertNode 노드 (데이터); 
        // 빈리스트가 삽입 
        IF (크기 == 0) { 
            헤드 = insertNode; 
            마지막 = insertNode;
        IF 다른} (인덱스 == 0) { 
            // 삽입 헤드 
            insertNode.next = 헤드, 
            헤드 = insertNode; 
        }는 다른 IF (인덱스 == 사이즈) { 
            // 꼬리 삽입 
            last.next = insertNode; 
            마지막 = insertNode; 
        } {다른 
            // 중간 노드를 삽입 
            (. 인덱스 - 1) 노드 prevNode = GET; 
            insertNode.next = prevNode.next; 
            prevNode.next = insertNode; 
        } 
        크기 ++; 
    } 

    / ** 
     * 노드 제거 
     * 
     * @param 지수 
     * 예외 :  
     * /
    {대중가 removeNode 노드 (INT 지수)
        IF (색인 <0 || 인덱스> 사이즈) { 
            드로 IndexOutOfBoundsException가 새로운 새로운 ( "리스트 노드의 범위를 벗어난"); 
        } 
        노드가 removeNode = NULL; 
        // 헤드 노드를 제거 
        (인덱스 == 0) {IF 
            가 removeNode = 헤드, 
            헤드 = head.next; 
        }는 다른 IF (인덱스 == 크기) { 
            // 꼬리 노드를 제거 
            노드 prevNode = GET (인덱스 - 1.) 
            가 removeNode = prevNode.next; 
            prevNode.next = NULL; 
            마지막 = prevNode을; 
        }는 다른 { 
            / / 중간 노드를 삭제 
            - 노드 prevNode = GET. (1 인덱스)  
            가 removeNode = prevNode.next;
            ; prevNode.next = prevNode.next.next 
        }
        size--; 
        가 removeNode를 반환; 

    } 

    / ** 
     * 모든 노드 정보 표시 
     * / 
    공공 무효 쇼 () { 
        ; 노드 = currentNode 헤드 
        그동안 (true로) { 
            (==는 null currentNode) {IF를 
                BREAK; 
            } 
            Log.i ( "태그"currentNode.data + "====== ================ 데이터"); 
            currentNode = currentNode.next; 
        } 
    } 

    전용 노드 GET INT (인덱스) { 
        IF (색인 <0 || 인덱스> = 크기) { 
            은 "범위를 넘어리스트 노드!"IndexOutOfBoundsException이 새로운 새를 (던져) 
        내가 인덱스를 <;에 대한 (I = 0 int로 내가 ++) { 
        }
        노드 온도 = 헤드; 
            온도 = temp.next; 
        } 
        반환 온도; 
    } 

} 

클래스 노드 { 
    int 데이터; 
    다음 노드; 

    공중 기지국 (int 데이터) { 
        this.data = 데이터; 
    } 
}

추천

출처blog.csdn.net/xjz19930319/article/details/93050740