首页 > 代码库 > 双向链表
双向链表
双向链表的结构
双向链表的节点
function Node(val){ this.val = val; this.next = null; this.pre = null; }
双向链表的创建
尾插法
function tailCreateList(arr){ var head = new Node(); var pre = head; arr.forEach((item) => { var node = new Node(item); node.pre = pre; pre.next = node; pre = pre.next; }) }
头插法
function headCreateList(arr){ var head = new Node(); var cur = head; arr.forEach((item) => { var node = new Node(item); node.pre = head; node.next = head.next; if(head.next){ head.next.pre = node; } head.next = node; }) return head; }
双链表的遍历
function traverse(head,fVisit){ var cur = head; fVisit = fVisit || function(item){console.log(item)} while(cur != null){ fVisit(cur); cur = cur.next; } }
双链表的查找
function find(head,val){ var cur = head; while(cur && cur.val != val){ cur = cur.next; } return cur; }
双链表的删除
function remove(head,val){ var cur = head; while(cur && cur.val != val){ cur = cur.next; } if(cur != null){ cur.pre.next = cur.next; cur.next.pre = cur.pre; cur.next = null; cur.pre = null; } }
双链表的插入
function insert(head,val,newVal){ var cur = head; while(cur && cur.val != val){ cur = cur.next; } if(cur != null){ var node = new Node(newVal); node.next = cur.next; node.pre = cur; cur.next = node; } }
双向链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。