この記事では、Javaの関連コードを共有して、参照用の単一リンクリストと双方向リンクリストを実装しています。特定のコンテンツは次のとおりです
Javaは単一のリンクリストを実装しています:
パッケージコード; class node {node next; INTデータ; public node(int data){this.data = data; }} class linklist {node first; // head public linklist(){this.first = null; } public void addnode(node no){no.next = first; first = no; // headに追加} public void delectnode(){node n = first.next; first = null; first = n; // headの削除} //指定された位置を削除public int number(){int count = 1; //ノードnd = first; while(nd.next!= null){nd = nd.next; count ++; } return count; } public void derectexact(int n){//指定された位置を削除するif(n> 1){int count = 1;ノードde = first; while(count <n-1){de = de.next; count ++; } de.next = de.next.next; } else first = first.next; } public void addexact(int n、node nd){if(n> 1)//指定された位置を追加{int count = 1;ノードde = first; while(count <n-1){de = de.next; count ++; } nd.next = de.next; de.next = nd; } else first = first.next; } public int findNode(int n){int count = 1; // number node de = first;に対応する位置を見つけます。 while(de.data!= n){de = de.next; count ++; if(de == null){return -1; }} return count; } public void print(){node no = first; // while(no!= null){system.out.println(no.data); no = no.next; }}} public class textnode {public static void main(string [] args){linklist ll = new linklist(); ll.addnode(new Node(12)); ll.addnode(new Node(15)); ll.addnode(new Node(18)); ll.addnode(new Node(19)); ll.addnode(new Node(20)); /*system.out.println(ll.first.data); ll.delectnode(); System.out.println(ll.first.data);*/ system.out.println(ll.number()); ll.delectexact(3); ll.addexact(3、new Node(100)); system.out.println(ll.number()); // ll.print(); system.out.println(ll.findnode(112)); }}Javaは双方向リンクリストを実装しています。
public class doublelink {public static void main(string [] args){node2 no = new node2(5); No.Addleft(new node2(6)); No.Addright(new node2(7)); /*NO.PRINT(); No.Print2();*/ no.addexact2(1、new node2(8)); No.Print(); System.out.println( "-----------------"); No.Print2(); }} class node2 {public node2 first; public node2 end; public node2左; public node2右; int data = 0; public node2(int n){first = this; end = this; first.data = n; } // head addleft(node2 before)からpublic voidを追加する{first.left = before; before.right = first; first = before; } // tail addright(node2 after)からpublic voidを追加する{end.right = efter; after.left = end; end = after; } // public void addexact(int n、node2 no){int count = 0; if(n == 0){addleft(no); } else {node2 f = first; while(true){f = f.right; count ++; if(count == n){//これは、4つのポインターNo.Left = f.Leftの指さしの指定の変化です。 f.left.right = no; // first.left = no; No.Right = F; f.left = no;壊す; }}}}} // public void addexact2(int n、node2 no){int count = 0; if(n == 0){addright(no); } else {node2 f = end; while(true){f = f.left; count ++; if(count == n){no.left = f; No.Right = F.Right; f.right.left = no; f.right = no;壊す; }}}}}} //陽性トラバーサルpublic void print(){system.out.println(first.data); while(first.right!= null){system.out.println(first.right.data); first = first.right; } // system.out.println(end.data); } //逆注文traversal public void print2(){system.out.println(end.data); while(end.left!= null){system.out.println(end.left.data); end = end.left; }}}/*新しいオブジェクトが挿入されるたびに、ポインターポインティングの変更に注意を払う必要があることは注目に値します。まず、この新しいオブジェクトの両側(左と右)の指された後、左に左オブジェクトが右側に指され、右オブジェクトが左に指されます。これらの4つのポインターの指さしは正しい必要があります。そうしないと、正または逆の順序トラバーサルを実装できないことにつながる可能性があります。 *//*単一のリンクされたリストを比較すると、単一のリンクされたリストは、頭が1つしかないため、一方向からのみ通過できますが、双方向リンクリストには頭と尾があります。 *頭または尾から横断することができます。さらに、オブジェクトの1つには2つの方向にポインターがあるため、左側の *オブジェクトと右側のオブジェクトを取得できます。 *しかし、単一リンクのリストの場合、方向は1つしかないため、左または右にしか行くことができません。オブジェクトを追加するときは、最初や最後からオブジェクトを追加することもできます。 *単一のリンクリストが2つの方向を追加する必要がある場合、左または右の方向へのポインターのみを持つため、まれであるかどうか*、双方向リンクリストの各オブジェクトは2つの方向へのポインターを持っているため、これは2つのオブジェクトが2つのポインターを含むため、2つの方向へのポインターがあります。 * * */上記はこの記事に関するものです。誰もがJavaプログラミングを学ぶことが役立つことを願っています。