【220、算法:升序链表】

78 阅读1分钟

以下是使用Java语言实现升序链表的示例代码:

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public ListNode insert(ListNode head, int val) {
    ListNode newNode = new ListNode(val);
    if (head == null || head.val >= val) {
        newNode.next = head;
        return newNode;
    }
    ListNode current = head;
    while (current.next != null && current.next.val < val) {
        current = current.next;
    }
    newNode.next = current.next;
    current.next = newNode;
    return head;
}

这里的 ListNode 类是链表节点的定义,包含一个整型值 val 和一个指向下一个节点的指针 next

insert 方法接收一个链表头节点 head 和一个待插入的整型值 val,并将该值插入到链表中使得链表仍然保持升序。如果链表为空或者 val 小于等于头节点的值,那么新节点将成为新的头节点;否则,从头节点开始遍历链表,直到找到一个节点的值大于等于 val,然后将新节点插入到该节点的前面即可。

可以使用以下代码来测试该方法:

ListNode head = new ListNode(1);
head.next = new ListNode(3);
head.next.next = new ListNode(4);

head = insert(head, 2);

while (head != null) {
    System.out.print(head.val + " ");
    head = head.next;
}

输出结果为:1 2 3 4,证明插入操作成功将 2 插入到了链表中,并保持了升序。