私は最近リンクされたリストについて尋ねられました、そして、友人が私とJavaについて話し合うときにそれを言った。正直に言うと、私はこの1年でプログラミングを学んだことはほとんどありませんでした。言語でJavaとC#を学び、Webに関するHTML+CSS+JavaScriptについて少し学びました。私はそれを好むので、Winformを学習するときはもっと真剣で、データベース操作を自分で勉強しました。しかし、私はリンクされたリストを勉強したり勉強したりしたことがありません。さらに、私は最近WPFを読んでおり、コースはJSPに到達しましたが、これは比較的厳しいです。
しかし、私はまだ一晩と半日を取り、一方向のリンクリストを見ることができました。そして、私はJavaを使用して例を書き込もうとしました。リンクされたリストにさらされていない友人は、それを参照として使用できます。もっと貴重な提案をすることを願っています。
まず、リンクされたリストとは何かを説明しましょう。私の知る限り、リンクされたリストはデータ構造であり、これは配列と同じレベルです。たとえば、Javaで使用するArrayListの実装原則はアレイです。 LinkedListの実装原則はLinkedリストです。私の先生は、リンクされたリストは循環するときは効率的ではないが、挿入して削除する際に明らかな利点があると述べた。それから彼は10年以上のプログラミング経験を持っています、私はそれを信じています。しかし、彼が双方向のリンクリストについて話しているかどうかはわかりません。片道リンクリストのみを理解するためにここにいます。
リンクリスト(この記事に記載されているチェーンはすべて一方向のリンクリストであり、以下はすべて単方向リンクリストと呼ばれます)は実際にノード(ノード)で構成されており、リンクされたリストには不確実な数のノードがあります。ヘッドノード(ヘッド)が外側に露出しているヘッドノード(ヘッド)のみがあり、リンクリストのすべての操作は、ヘッドノードを介して直接または間接的に実行されます。
ノードは、保存する必要があるオブジェクトと次のノードへの参照で構成されています。つまり、ノードには2つのメンバーがあります。保存されたオブジェクト、次のノードへの参照です。
あなたはこれをあまりよく理解していないかもしれませんし、私が写真を投稿するかどうかを理解する方が簡単かもしれません。
Javaシングルリンクリストの基本操作を実装するための重要なコードは次のとおりです。
パッケージcom.tyxh.link; //ノードクラスパブリッククラスノード{次のノード保護。 //ポインターフィールド保護intデータ; //データフィールドパブリックノード(intデータ){this。 data = data; } //このノードpublic void display(){systemを表示します。 out.print(data + ""); }}パッケージcom.tyxh.link; //シングルリンクリストpublic class linklist {public node first; //ヘッダープライベートInt pos = 0; //ノードパブリックリンクリスト()の場所を定義します{this。 first = null; } //ヘッドノードを挿入public public void addfirstnode(int data){node node = new node(data);ノード。 next = first; first = node; } //ヘッドノードを削除し、ヘッドノードパブリックノードdeletefirstnode(){node tempnode = first; first = tempnode。次; tempnodeを返します。 } //任意の場所にノードを挿入し、index add(int index、int data){node node = new node(data);ノードcurrent = first;ノード前= first; while(pos!= index){forter = current; current = current。次; pos ++; }ノード。 next = current;前の。 next = node; pos = 0; } //任意の場所でノードを削除しますパブリックノードdeleteBypos(int index){node current = first;ノード前= first; while(pos!= index){pos ++;前= current; current = current。次; } if(current == first){first = first。次; } else {pos = 0;前の。 next = current。次; } return current; } //ノードのデータに従ってノードを削除します(最初のデータのみを削除)パブリックノードdeleteBydata(int data){node current = first;ノード前= first; //前のノードを覚えておいてください(current。data!= data){if(current。next== null){return null; }前= current; current = current。次; } if(current == first){first = first。次; } else {前。 next = current。次; } return current; } //すべてのノード情報を表示public void displayallnodes(){node current = first; while(current!= null){current.display(); current = current。次; } システム。 out.println(); } //場所に基づいてノード情報を見つけますパブリックノードfindbypos(int index){node current = first; if(pos!= index){current = current。次; pos ++; } return current; } //データに基づいてノード情報を見つけますパブリックノードfindBydata(int data){node current = first; while(current。data!= data){if(current。next== null)return null; current = current。次; } return current; }}パッケージcom.tyxh.link; // Class Class Public Class LinkList {public static void main(string [] args){linklist linklist = new linklist(); linklist.addfirstnode(20); linklist.addfirstnode(21); linklist.addfirstnode(19); // 19,21,20 linklist.add(1、22); // 19,22,21,20 linklist.add(2、23); // 19,22,23,21,20 linklist.add(3、99); // 19,22,23,99,21,20 linklist.displayallnodes(); // node node = linklist.deletefirstnode(); // system.out.println( "node:" + node.data); // linklist.displayallnodes(); // node = linklist.deletebypos(2); // system.out.println( "node:" + node.data); // linklist.displayallnodes(); // linklist.deletefirstnode(); node node = linklist.deletebydata(19); // node node = linklist.deletebypos(0);システム。 out.println( "node:" +node。data); linklist.displayallnodes(); node node1 = linklist.findbypos(0);システム。 out.println( "node1:" +node1。data); node node2 = linklist.findbydata(22);システム。 out.println( "node2:" +node2。data); }}上記は、編集者が紹介したJavaシングルリンクリストの基本操作の実装です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!