输入一个链表,从尾到头打印链表每个节点的值。
方法一:用栈 方法二:递归 方法三:使用java中的 Collections.reverse()
C++:
1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode *next; 5 * ListNode(int x) : 6 * val(x), next(NULL) { 7 * } 8 * }; 9 */10 class Solution {11 public:12 vector printListFromTailToHead(ListNode* head) {13 if(head == NULL)14 return vector () ;15 stack s ;16 vector res ;17 ListNode* p = head ;18 while(p != NULL){19 s.push(p->val) ;20 p = p->next ;21 }22 while(!s.empty()){23 res.push_back(s.top()) ;24 s.pop() ;25 }26 return res ;27 }28 };
java:
1 /** 2 * public class ListNode { 3 * int val; 4 * ListNode next = null; 5 * 6 * ListNode(int val) { 7 * this.val = val; 8 * } 9 * }10 *11 */12 import java.util.*;13 public class Solution {14 public ArrayListprintListFromTailToHead(ListNode listNode) {15 Stack stack = new Stack<>() ;16 while(listNode != null){17 stack.push(listNode.val) ;18 listNode = listNode.next ;19 }20 ArrayList list = new ArrayList<>() ;21 while(!stack.isEmpty()){22 list.add(stack.pop()) ;23 }24 return list ;25 }26 }