在链表中插入一个节点。
样例
给出一个链表 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;
}
}
本文介绍了一种在链表中插入新节点的算法,通过使用虚拟头节点简化了插入操作,确保了代码的健壮性和通用性。该算法特别适用于在有序链表中插入元素,确保插入后链表仍保持有序。
3804

被折叠的 条评论
为什么被折叠?



