双向链表
双向链表的结构
双向链表的节点
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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具