代码随想录 | Day03 | 链表Part01 | 203.移除链表元素 | 707.设计链表 | 206.反转链表

47 阅读1分钟

链表基础

该结构主要是考虑到数组进行增加删除时, 会使元素前移或者后移,效率比较低

juejin.cn/post/692151…

    function ListNode(){
        this.val = val
        this.next = next
    }

203.移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 

思路一、for循环

function(head, val) {
    const ret = new ListNode(0, head);
    let cur = ret;
    while(cur.next) {
        if(cur.next.val === val) {
            cur.next =  cur.next.next;
            continue;
        }
        cur = cur.next;
    }
    return ret.next;
};

707. 设计链表

比较长,这里直接附链接 programmercarl.com/0707.%E8%AE…

206.反转链表

思路一、双指针

function(head) {
    let pre = null
    let cur = head
    let temp = null
    while(cur){
        temp = cur.next
        cur.next = pre
        pre = cur
        cur = temp
}
    return pre
};

复习一下链表前序遍历以及后序遍历


function traverse(head){
    //这里写前序遍历代码
    traverse(head.next)
    //这里写后序遍历代码
}