链表

链表与数组区别

  • 数组增删非首尾时往往需要移动元素
  • 链表增删非首尾元素不需要移动元素,只需要修改next指针的指向即可

链表实现与遍历

const a = { val: 'a' }
const b = { val: 'b' }
const c = { val: 'c' }
const d = { val: 'd' }
a.next = b
b.next = c
c.next = d

// 遍历链表
let p = a
while (p) {
  console.log(p.val)
  p = p.next
}
const e = { val: 'e' }
// 插入e到c与d之间
c.next = e
e.next = d
// 删除e
c.next = d

LeetCode 删除链表中的节点(237题)

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。

// 传入参数被删除的节点无法获取上一个节点,所以只能将下一个节点赋值给被删除的节点,删除复制的节点
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} node
 * @return {void} Do not return anything, modify node in-place instead.
 */
var deleteNode = function(node) {
    node.val = node.next.val;
    node.next = node.next.next
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容