转载自Leet
Code《剑指Offer》
题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入:1->2->3->4->5->NULL
输出:5->4->3->2->1->NULL
提示:
我的思路
由于链表只能从头到尾遍历的特性,利用栈来实现对其的反转。题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入:1->2->3->4->5->NULL
输出:5->4->3->2->1->NULL
提示:
我的思路
由于链表只能从头到尾遍历的特性,利用栈来实现对其的反转。
我的代码
{.line-numbers}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
class MySolutionOffer24 { public ListNode reverseList(ListNode head) { if (head==null) return null; Stack<ListNode> stack = new Stack(); ListNode newHead = null; ListNode p = head; while (p!=null) { stack.push(p); p = p.next; } ListNode pre = newHead; while (!stack.isEmpty()) { p = stack.pop(); if (newHead==null) { newHead = p; pre = newHead; } else { pre.next = p; pre = p; } } p.next = null; return newHead; } }
|