이 기사에서는 연결 목록 코드 예제를 처음부터 끝까지 인쇄하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!