在链表中插入一个节点。
样例
给出一个链表 1->4->6->8
和 val = 5
.。
插入后的结果为 1->4->5->6->8
。
解题思路:
简单。考虑到可能插入到表头,所以需要dummy节点做辅助。
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param head: The head of linked list.
* @param val: An integer.
* @return: The head of new linked list.
*/
public ListNode insertNode(ListNode head, int val) {
// write your code here
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode p = dummy;
while(p != null){
ListNode next = p.next;
if(next != null && next.val < val){
p = p.next;
}else{ //当p.val<val && next.val>val时代表找到插入节点的位置
ListNode newNode = new ListNode(val);
newNode.next = next;
p.next = newNode;
break;
}
}
return dummy.next;
}
}