链表刷题总结
Posted skyeangel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表刷题总结相关的知识,希望对你有一定的参考价值。
* class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * }
查找一个链表的中间节点:使用快慢指针
注意:如果用途是对链表的左右分别递归调用时,需要将中间节点的前一个结点的next = null 即需要一个pre结点(注意先要赋null初始化)
ListNode midList(ListNode node){ if(node == null || node.next == null) return node; ListNode slow = node, fast = node; ListNode pre = null; while(fast != null && fast.next != null){ pre = slow; slow = slow.next; fast = fast.next.next; } pre.next = null; return slow; }
反转一个链表,并返回头结点
ListNode reverse(ListNode node){ if(node == null || node.next == null) return node; ListNode pre = null; while(node != null){ ListNode next = node.next; node.next = pre; pre = node; node = next; } return pre; }
以上是关于链表刷题总结的主要内容,如果未能解决你的问题,请参考以下文章