>Java >java지도 시간 >역방향 연결 목록을 구현하는 Java 코드 예제

역방향 연결 목록을 구현하는 Java 코드 예제

黄舟
黄舟원래의
2017-10-17 10:11:111530검색

이 글은 주로 Java 언어로 역방향 연결 목록을 구현하는 코드 예제를 소개합니다. 편집자는 그것이 필요하다고 생각하는 친구들을 위해 여기에 공유합니다.

문제 설명

연결 리스트의 헤드 노드를 입력하고, 연결 리스트를 반전시켜 역연결 리스트의 헤드 노드를 출력하는 함수를 정의하세요. 연결된 목록 노드는 다음과 같습니다.


public class ListNode {
  int val;
  ListNode next = null;
  ListNode(int val) {
    this.val = val;
  }
}

아이디어 1:

연결된 목록을 되돌리려면 노드 i의 경우 이전 노드 옆을 가리켜야 하므로 이전 노드를 저장해야 합니다. 동시에, i의 다음을 재할당했다면 i의 후임자를 찾을 수 없기 때문에 재할당하기 전에 i의 후임자를 저장해야 합니다.

코드:


public ListNode ReverseList(ListNode head) {
    if(head == null){
      return null;
    }
    ListNode rHead = null;
    ListNode prior = null;//store prior
    ListNode q = head;//store current
    while(q != null){
      ListNode next = q.next;//store the next
      if(next == null){
        rHead = q;
      }
      q.next = prior;
      prior = q;
      q = next;
    }
    return rHead;
  }

아이디어 2:

재귀 아이디어를 사용하세요. (아직 생각해 본 적이 없습니다. 왜냐하면 재귀를 사용한다면 매번 다음과 같아야 하기 때문입니다. the linked list<-재귀로 반환된 연결리스트의 tail 포인터인데, 이 경우 반전된 head 포인터를 얻을 수 없다.) 나중에 생각해 보자.

요약

위 내용은 역방향 연결 목록을 구현하는 Java 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.