Skip to content

链表

指针指向的是一个引用

在写链表时需要特别注意要记住链表的火车头,当你新创建一个指针,将其链接到火车头的下一列车厢,其仍然是连接着的,这时候你就可以对此指针,进行继续链接,最终会获得一列长火车。

例如力扣第2题

js
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function (l1, l2) {
    let head = new ListNode(0);//虚拟头节点
    let node = head;
    let carry = 0;

    while (l1 || l2) {
        let l1Val = l1 ? l1.val : 0;
        let l2Val = l2 ? l2.val : 0;

        let sum = l1Val + l2Val + carry;
        carry = Math.floor(sum / 10);//用于判断是否要进位
        node.next = new ListNode(sum % 10);//把next指向sum的个位数
        node = node.next;//遍历

        if (l1) l1 = l1.next;
        if (l2) l2 = l2.next;
    }
    // 防止最后一位时仍然还有进位
    if (carry) {
        node.next = new ListNode(carry);
    }
    return head.next;
};

Released under the MIT License.