在对Linked List进行操作时,当head有可能会改变时,给head前创建一dummy,并使其指向head
--保持对head的控制权
stop codition : cur == null || cur.value >= target
public ListNode insert(ListNode head,int target) {
// 先创建要插入的N
ListNode N = new ListNode(target);
// corner case
if (head == null) {
return N;
}
ListNode dummy = new ListNode(-1); // 这个赋值不重要,因为不会对dummy的value进行操作,只是
dummy.next = head; // 为了保护对head的控制权
ListNode pre = dummy; // cur移动来确定要插入的位置
ListNode cur = head; // pre和cur中间为插入位置
// 找要插入的位置
while (cur != null && cur.next.value < target) {
pre = pre.next;
cur = cur.next;
}
// 插入N在pre和cur后面
pre.next = N;
N.next = cur;
return dummy.next;
}