이 블로그는 비교적 간단합니다. 이해하지 못하면 단일 링크 목록의 역 순서를 살펴보십시오.
역순 아이디어
이제 링크 된 목록이 있다고 가정합니다.이 목록은 역 순서로 작동해야합니다. 우리가 생각하는 첫 번째 것은 포인터 관계를 뒤집는 것입니다.
사실, 그게 다야. 블로거는이 목표를 가진 단일 링크리스트 리버스 순서 작동입니다.
노드 pre = null; 노드 post = null; while (head! = null) {post = head.next; head.next = pre; pre = 헤드; 헤드 = 포스트;}이것이 역 차수의 핵심입니다. 단계별로 설명해 봅시다.
처음에는 사전 및 게시물이 NULL로 설정됩니다. 코드 라인 실행 후 HEAD.NEXT = PRE의 라인을 실행 한 후에 원래 헤드 노드의 다음이 NULL, 즉 링크 된 전체 목록의 널이되기 때문에 필요합니다.
원래 링크 목록 끝의 다음이 널이라고 상상해보십시오. 여기서 진실은 동일합니다.
현재 원래 헤드 노드에 대한 사전을 업데이트하는 것은 다음 역 순서의 다음 단계를 준비하는 것이며 헤드는 자연스럽게 원래 헤드가됩니다 .next.
죄송합니다. 내 손이 떨리고 잘못 그렸습니다. 모두 감사합니다. 손으로 그린 다이어그램에서 다섯 번째는 프리 노드가 노드 5의 위치에 있어야하며 헤드가 없음을 나타냅니다.
전설에서 헤드를 계속해서 뒤로 움직이고 리버스 순서의 효과를 달성하기 위해 프리 노드를 동시에 업데이트한다는 것을 보는 것은 어렵지 않습니다.
암호
패키지 목록; public class reverselist {public static void main (string [] args) {node head = new Node (1); int [] value = {2,3,4,5}; 노드 온도 = 헤드; for (int i = 0; i <value.length; i ++) {node = new Node (value [i]); temp.next = node = node = node = temp.next;} printList (Head); // 출력 순서를 반대 방향으로 반대쪽으로 링크 된 목록 HEAD = Reverse (Head); PrintList (Head); // 헤드를 다시 반전 시키십시오 = ReversesingLelist (Head); PrintList (Head);} public static void printlist (node head) {while (while! = null). head.next;} system.out.println ();} public static node reverse (노드 헤드) {노드 pre = null; 노드 포스트 = null; while (head! = null) {head = head.next; head.next = pre; pre = head; head = post;} return pre; null; while (head! = null) {next = head.next; head.next = pre = head; head = head = next;} return pre;}} 클래스 노드 {public int value; public node next; public node (int value) {this.value = value;}}시험
테스트 후 코드 출력이 정확합니다.
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
이해하기 위해 다음은 다음과 같은 예입니다.
/** * java는 단일 링크 목록의 역 순서 * @author 관리자 * */public class singlelinkedreverse {int data; int data; public node (int data) {this.data = data;}} public static void main (string [] args) {singlelinkedre verever (node); slr.new 노드 (0); for (int i = 1; i <10; i ++) {node p = slr.new 노드 (i); tail.next = p; tail = p;} tail = head; while (head! = null) {system.out.print (head.data+""; head = head = head.next;}} 개인 정적 노드 리버스 (Node Head) {Node P1, P2 = NULL; P1 = HEAD; while.next! = null) {p2 = head.next; head.next = p2.next; p2.next = p2;} P2;}}테스트 결과 :
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
요약
위의 것은 Java 단일 링크 목록의 역 순서 사용의 코드 예제에 대한이 기사의 전체 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!