/**
*1.从尾到头打印链表
* 方法一:创建两个链表集合,一个记录从头到尾的链表的值。从尾部遍历这个链表集合存储到集合中。
* 方法二: 从尾到头用栈来存储。先遍历链表,把值存到栈中。把栈到值存到链表集合中。
*/
public class coding1 {
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){
//1.方法一
//1.创建一个链表保存从头到尾的链表
ArrayList<Integer> arrayList1=new ArrayList<>();
ArrayList<Integer> arrayList2=new ArrayList<>();
//一般要一个节点
ListNode temp=listNode;
while (temp!=null){
arrayList1.add(temp.val);
temp=temp.next;
}
for(int i=arrayList1.size()-1;i>=0;i--){
arrayList2.add(arrayList1.get(i));
}
return arrayList2;
}
public static ArrayList<Integer> printListFromTailToHead1(ListNode listNode) {
Stack<Integer> stack=new Stack<>();
ListNode temp=listNode;
while (temp!=null){
stack.push(temp.val);
temp=temp.next;
}
ArrayList<Integer> arrayList=new ArrayList<>();
//循环遍历
while (!stack.isEmpty()){
arrayList.add(stack.pop());
}
return arrayList;
}
public static void main(String[] args) {
//1.
ListNode s1=new ListNode(1);
ListNode s2=new ListNode(2);
ListNode s3=new ListNode(3);
ListNode s4=new ListNode(4);
ListNode s5=new ListNode(5);
s1.next=s2;
s2.next=s3;
s3.next=s4;
s4.next=s5;
s5.next=null;
System.out.println(printListFromTailToHead(s1));
}
}