이 기사는 Java가 단일 연결 목록과 참조 용 양방향 링크 목록을 구현할 관련 코드를 공유합니다. 특정 내용은 다음과 같습니다
Java는 단일 링크 목록을 구현합니다.
패키지 코드; 클래스 노드 {노드 다음; int 데이터; public node (int data) {this.data = data; }} 클래스 링크리스트 {노드 먼저; // head public linklist () {this.first = null; } public void addnode (노드 번호) {No.Next = 첫 번째; FIRST = NO; // 헤드를 추가} public void delectNode () {Node n = first.next; 첫 번째 = null; first = n; // 헤드에서 삭제} // 지정된 위치를 삭제하여 public int number () {int count = 1; // 노드 nd = 먼저 얼마나 많은 요소가 있는지 확인하십시오. while (nd.next! = null) {nd = nd.next; 카운트 ++; } 반환 수; } public void delectexact (int n) {// 지정된 위치를 (n> 1) {int count = 1; 노드 de = 첫 번째; while (count <n-1) {de = de.next; 카운트 ++; } de.next = de.next.next; } else first = first.next; } public void addexact (int n, node nd) {if (n> 1) // 지정된 위치를 추가 {int count = 1; 노드 de = 첫 번째; while (count <n-1) {de = de.next; 카운트 ++; } nd.next = de.next; de.next = nd; } else first = first.next; } public int findnode (int n) {int count = 1; // 숫자 노드 de = first에 해당하는 위치를 찾습니다. while (de.data! = n) {de = de.next; 카운트 ++; if (de == null) {return -1; }} 반환 수; } public void print () {Node no = first; // All while (no! = null) {System.out.println (No.Data); 아니오 = No.Next; }}} public class textnode {public static void main (String [] args) {linklist ll = new LinkList (); ll.addnode (새 노드 (12)); ll.addnode (새 노드 (15)); ll.addnode (새 노드 (18)); ll.addnode (새 노드 (19)); ll.addnode (새 노드 (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, 새 노드 (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); NODEDINGFT (New Node2 (6)); 아니오 aaddright (New Node2 (7)); /* no.print (); No.Print2 ();*/ No.AdDexAct2 (1, New Node2 (8)); 아니요 .print (); System.out.println ( "------------------"); 아니오 .print2 (); }} class node2 {public node2 먼저; 공개 node2 끝; 공개 node2 왼쪽; 공개 node2 권리; int data = 0; public node2 (int n) {first = this; 끝 = 이것; 첫 번째 .data = n; } // 헤드 addleft에서 공개 공허를 추가합니다 (이전) {first.left = 이전; 전에. right = 먼저; 첫 번째 = 이전; } // 꼬리에서 공개 공허를 추가합니다. (node2 After) {end.right = after; 이후 .left = 끝; 끝 = 후; } // 공개 void addexact의 수를 삽입합니다 (int n, node2 no) {int count = 0; if (n == 0) {addleft (no); } else {node2 f = 첫 번째; while (true) {f = f.right; 카운트 ++; if (count == n) {// 이것은 네 개의 포인터를 가리키는 변화입니다. no.left = f.left; f.left.right = 아니요; // first.left = 아니요; 아니요. right = f; f.left = 아니오; 부서지다; }}}}} // public void addexact2의 수를 삽입합니다 (int n, node2 no) {int count = 0; if (n == 0) {addright (no); } else {node2 f = 끝; while (true) {f = f.left; 카운트 ++; if (count == n) {No.Left = f; 아니요. right = F.right; F.right.left = 아니오; F.right = 아니오; 부서지다; }}}}} // positive traversal public void print () {System.out.println (First.data); while (first.right! = null) {System.out.println (첫 번째 .right.data); 첫 번째 = 우선. } // system.out.println (end.data); } // 리버스 순서 트래버스 공개 void print2 () {System.out.println (end.data); while (end.left! = null) {system.out.println (end.left.data); end = end.left; }}}/*새 개체가 삽입 될 때마다 포인터 포인팅의 변경에주의를 기울여야한다는 점에 주목할 가치가 있습니다. 먼저,이 새로운 객체의 양쪽을 가리키고 (왼쪽과 오른쪽), 왼쪽 객체를 오른쪽으로 가리키고 왼쪽으로 오른쪽 물체를 가리키는 것이 뒤 따릅니다. 이 네 개의 포인터를 가리키는 것은 정확해야합니다. 그렇지 않으면 양성 또는 역 순서 트래버스를 구현할 수 없을 수 있습니다. *//*단일 링크 목록을 비교하면 단일 링크 목록은 헤드가 하나만 있기 때문에 한 방향에서만 이동할 수 있으며 양방향 링크 목록에는 헤드와 꼬리가 있습니다. * 머리 나 꼬리에서 횡단 될 수 있습니다. 또한 객체 중 하나에 두 방향으로 포인터가 있으므로 왼쪽의 * 물체와 오른쪽의 객체를 얻을 수 있습니다. * 그러나 단일 연결 목록의 경우 한 방향 만 있으므로 왼쪽이나 오른쪽으로 만 갈 수 있습니다. 객체를 추가 할 때 처음이나 끝에서 객체를 추가 할 수도 있습니다. * 단일 링크 된 목록이 두 방향을 추가 해야하는 경우, 왼쪽 또는 오른쪽의 한 방향으로의 포인터 만 가지고 있기 때문에 드물거나 그렇지 않습니다. 반면, 양방향 링크 된 목록의 각 객체에는 두 방향으로의 포인터가 더 유연하지 않지만,이 방법으로는 두 가지 포인터가 포함되므로 더 많은 기억을 섭취 할 수 있습니다. * * */위의 내용은이 기사에 관한 모든 것입니다. 모든 사람들이 Java 프로그래밍을 배우는 것이 도움이되기를 바랍니다.