import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;
/**
* 从头到尾打印单链表
* @Description
*/
public class Test04 {
public static class ListNode{
int value;
ListNode next;
public ListNode(int value){
this.value = value;
}
}
//递归法
public int[] reversePrint2(ListNode head) {
if (head == null){
return new int[0];
}
List<Integer> list = new ArrayList<>();
reversePrintRecursive(head,list);
int size = list.size();
int[] result = new int[size];
for (int i = 0; i < size; i++) {
result[i] = list.get(i);
}
return result;
}
private void reversePrintRecursive(ListNode node, List<Integer> list) {
if (node == null){
return;
}
if (node.next != null){
reversePrintRecursive(node.next,list);
}
//递归返回的时候将值加入list当中
list.add(node.value);
}
//利用栈(非递归)
public int[] reversePrint(ListNode head) {
Stack<ListNode> stack = new Stack<ListNode>();
ListNode temp = head;
while (temp != null){
stack.push(temp);
temp = temp.next;
}
int size = stack.size();
int[] result = new int[size];
for (int i = 0; i < size; i++) {
result[i] = stack.pop().value;
}
return result;
}
public static void main(String[] args) {
ListNode ListNode1 = new ListNode(1);
ListNode ListNode2 = new ListNode(2);
ListNode ListNode3 = new ListNode(3);
ListNode ListNode4 = new ListNode(4);
ListNode ListNode5 = new ListNode(5);
ListNode1.next=ListNode2;
ListNode2.next=ListNode3;
ListNode3.next=ListNode4;
ListNode4.next=ListNode5;
System.out.println(Arrays.toString(new Test04().reversePrint(ListNode1)));
}
}
剑指Offer-03-从头到尾打印单链表
最新推荐文章于 2021-10-23 22:09:24 发布