反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
题目分析:
将一个单链表反转,令前一个节点是后一个节点的next即可
代码实现:
public static class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } public ListNode reverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode Pre = head; ListNode Node = head.next; Pre.next = null; while (Node != null){ ListNode Next = Node.next; Node.next = Pre; Pre = Node; Node = Next; } return Pre; }
首先要处理头节点,令头节点的next等于null
主函数:
public static void main(String[] args) { L4 l = new L4(); ListNode node = new ListNode(1); node.next = new ListNode(2); node.next.next = new ListNode(3); node.next.next.next = new ListNode(4); ListNode res = l.reverseList(node); while (res != null){ System.out.print(res.val + " "); res = res.next; } }
运行结果:
4 3 2 1