>  기사  >  Java  >  연결 목록을 처음부터 끝까지 인쇄하는 Java 구현의 분석 예

연결 목록을 처음부터 끝까지 인쇄하는 Java 구현의 분석 예

黄舟
黄舟원래의
2017-10-16 09:51:591319검색

이 기사에서는 연결 목록 코드 예제를 처음부터 끝까지 인쇄하는 Java 프로그래밍을 주로 소개합니다. 편집자는 이것이 꽤 좋다고 생각하므로 도움이 필요한 친구들을 위해 여기에서 공유하겠습니다.

문제 설명: 연결리스트의 헤드 노드를 입력하고, 테일부터 헤드까지 각 노드의 값을 출력합니다.

먼저 연결 목록 노드를 정의합니다


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

아이디어 1: 이 질문은 분명히 스택, 후입선출, 연결 목록을 먼저 순회하고 노드 값을 푸시하는 아이디어를 사용합니다. ​​스택에 넣습니다. 마지막으로 스택을 순회한 후 스택을 팝합니다.


public static Stack<Integer> printListReverse_Stack(ListNode listNode){
    Stack<Integer> stack = new Stack<Integer>();
    if(listNode != null){
      ListNode p = listNode;
      while(p != null){
        stack.add(p.val);
        p = p.next;
      }
    }
    return stack;
  }

아이디어 2: 연결 리스트를 직접 탐색하여 헤드 삽입 방식에 따라 ArrayList에 하나씩 삽입합니다.


public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表头也存储元素
    ArrayList<Integer> print = new ArrayList<Integer>();
    if(listNode == null){
      return print;
    }
    int add = 0;
    ListNode p = listNode;
    while(p != null){
      print.add(0, p.val);
      p = p.next;
    }
    return print;
  }

아이디어 3: 재귀라는 아이디어를 활용할 수 있습니다. (본질적으로 스택의 아이디어이기도 함)


public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){
    ArrayList<Integer> print = new ArrayList<Integer>();
    if(listNode == null){
      return print;
    }
    print.addAll(printListReversely_Recursively(listNode.next));
    print.add(listNode.val);
    return print;
  }

Summary

위 내용은 연결 목록을 처음부터 끝까지 인쇄하는 Java 구현의 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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