做LeetCode时遇到的一个小问题,总结一下。
链表定义为如下
public class ListNode {
int val;ListNode next;
ListNode(int x) { val = x; }
}
要求用插入排序对其进行排序,并返回第一个节点。
解决方案的代码如下:
public class Solution {
public ListNode insertionSortList(ListNode head) {
//处理特殊情况
if(head == null) {
return head;
}
//定义helper节点,在下面它会被插到链表的开头,作为链表新的开头,可以方便的使用
ListNode helper = new ListNode(0);
//1.因为是单向的链表,所以插入项的前一项要被记录2.用它来遍历已经排序的项依次与插入项比较,得到插入位置
ListNode pre = helper;
//定义插入节点,开始时为head
ListNode ins = head;