链表是由多个元素组成的列表,元素存储不连续,用next指针连在一起。
数组和链表的区别:
数组增删非首尾元素时往往需要移动元素
链表增删首尾元素不需要移动元素,只需要更改next指向即可
JS中没有链表,但是可以用object来模拟链表
const a={val='a'}
...
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'}
c.next=e;
e.next=d;
/*删除*/
c.next=d
该题目删除链表中的节点,但是不可以访问头部,只能访问被删除的node,这时候可以将被删节点的值改为下一个节点的值,然后把下一个节点删除就可以了,两行代码
/**
* 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
};