中央のリストの先頭、を含め、業務のリストは、最後の追加と削除します

パッケージcom.rao.linkList; 

/ ** 
 * @author Srao 
 * @className LINKLIST 
 * @date 2019年12月3日午前10時39 
 * @package com.rao.linkList 
 * @description 
 * / 
パブリック クラスLINKLIST {
     / ** 
     *添字から出発して、ノードを定義1。
     * / 
    静的 クラスノード{
         パブリック整数データ、
         公共次ノードと、
         パブリックノード(整数データ){
             この .DATA = データ; 
        } 
    } 

    // ヘッダノード定義
    公開ノードヘッド; 

    / **
     *リストを初期化するため
     * @paramのヘッド
      * / 
    パブリックLINKLIST(ノードヘッド){
         この .head = ヘッド; 
    } 

    パブリックLINKLIST(){ 
    } 

    // データルックアップノード
    のパブリックノードfindNodeByData(整数データ){ 
        ノード現ノード = ヘッドと、
         一方(!現ノード= ヌル!&& currentNode.data.equals(データ)){ 
            現ノード = currentNode.next; 
        } 
        戻り現ノードを; 
    } 

    // インデックスに従ってノードを見つける
    公共FindNodeByIndexノード(int型のインデックス){
         int型 NUM = 1 ; 
        ノード現ノード = ヘッドと、
         一方(現ノード=!ヌル &&インデックス=!NUM){ 
            現ノード = currentNode.next; 
            NUM ++ ; 
        } 
        戻り現ノードは; 
    } 

    // インサート要素(指定された要素を挿入後方)
    公共 ボイド insertNode(int型のインデックス、ノードノード){
         IF(インデックス== 0 ){ 
            node.next = ヘッド。
            ヘッド = currentNode.data.equals(データ)){ノード;
            リターン; 
        } 
        ノード現ノード = findNodeByIndex(インデックス)
        ノードNEXTNODE = currentNode.next。
        currentNode.next = ノード。
        node.next = NEXTNODE。
    } 

    // 根据值删除结点
    公共 ボイドdeleteNodeByData(整数データ){ 
        ノード現ノード = ヘッド。
        ノードpreNode = nullをしばらく!(現ノード= nullを!&& 
            preNode = 現ノード。
            現ノード = currentNode.next; 
        } 
        IF(preNode == nullの){ // 最初のヒット
            IF(head.next =!ヌル){ 
                ヘッド = head.next; 
            } { 
                ヘッド = ヌル; 
            } 

        } 他の IF(現ノード== nullの){ // 最後のヒット 
            preNode.next = ヌル; 
        }  = {
            preNode.nextcurrentNode.next; 
        } 
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){ 
        LINKLIST LINKLIST = 新しい LINKLIST(新しいノード(100 ))。
        linkList.insertNode( 1、新しいノード(3 ))。
        linkList.insertNode( 1、新しいノード(4 ))。
        linkList.insertNode( 1、新しいノード(5))。// 向中间插入 
        linkList.insertNode(0、新しいノード(20)); // 向头插入 
        linkList.insertNode(5、新しいですノード(21)である); // 尾に挿入 
        するSystem.out.println(linkList.findNodeByIndex(2 ).DATA)
        のSystem.out.println(linkList.findNodeByData( 5 ).next.data) ; 
        のSystem.out.println(linkList.findNodeByIndex( 6。).DATA); 
        linkList.deleteNodeByData( 100); //は、中間ノード削除 
        linkList.deleteNodeByDataを(20); // 削除ヘッダノード 
        linkList.deleteNodeByData(21)。// ノード尾部を除去
        するSystem.out.println(linkList.head.data); 
    } 
}

議論のポイントを追加し、削除してください、だけでなく、国境の状況に関する筆記試験コードの後に​​、限りアイデアはまっすぐとして、大きな問題ではない書き込みコード

おすすめ

転載: www.cnblogs.com/rao11/p/11975924.html