




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JS部分- LinkedList.js/* * author Tony * description 该js文件定义了双向链表 */LinkedList = function()function Node(data, prev, next) this.data = data | null; this.prev = prev | null; this.next = next | null;Ntotype = getValue: function() return this.data; , setValue: function(obj) this.data = obj; , getPrev: function() return this.prev; , setPrev: function(node) this.prev = node; , getNext: function() return this.next; , setNext: function(node) this.next = node; ;Ntotype.constructor = Node;function nodeByIndex(index, list) var i = 0, node = list.head, length = list.length; / 第一个 if(index=0) return node; while(node.next) if(i=index) return node; node = node.next & node.next; i+; / 最后 一个 node = length-1 = index ? node : null; return node; function nodeByData(data, list) var node = list.head; while(node.next) if(node.data = data) return node; node = node.next; if(node.data = data) return node; / 没有找到 return null;function LinkedList() this.head = null; this.tail = null; this.length = 0;LinkedLtotype = add: function(index, obj) if(obj = undefined | obj = null | typeof index != number) throw new Error(add failed, invalid param); / 逆向取 -1,如取最后一个元素 if(index 0) index = this.length + index; / 空链表/索引越界 if(indexthis.length) throw new Error(add failed, invalid index); var newNode = new Node(obj); if(index=0) if(this.head) newNode.setNext(this.head); this.head = newNode; else this.head = this.tail = newNode; else var node = nodeByIndex(index-1, this), next = node.next; node.setNext(newNode); newNode.setPrev(node); newNode.setNext(next); this.length+; , get: function(index) if(typeof index != number) throw new Error(get failed, invalid param); / 逆向取 -1,如取最后一个元素 if(index 0) index = this.length + index; / 空链表/索引越界 if(this.isEmpty() | index=this.length) throw new Error(Index: + index + , Size: + this.length); var node = nodeByIndex(index, this); return node.data; , getFirst: function() return this.get(0); , getLast: function() return this.get(this.length-1); , set: function(index, obj) / 逆向取 -1,如取最后一个元素 if(index 0) index = this.length + index; / 空链表/索引越界 if(this.isEmpty() | index=this.length) throw new Error(Index: + index + , Size: + this.length); var node = nodeByIndex(index, this); node.data = obj; , size: function() return this.length; , clear: function() this.head.next = null; this.head = null; , remove: function(obj) var isIndex = typeof obj = number; var node = isIndex ? nodeByIndex(obj, this) : nodeByData(obj, this); if(node = null) throw new Error(remove failed, the node does not exist); var prev = node.prev; / 删除第一个元素,注意第一个元素没有前驱 if(prev = null) this.head = node.next; this.head.prev = null; node.next = null; node = null; else prev.setNext(node.next); node.next.setPrev(prev); node.prev = null; node.next = null; node = null; this.length-; , isEmpty: function() return this.head = null; , addLast: function(obj) this.add(this.length, obj); , addFirst: function(obj) this.add(0, obj); , contains: function(obj) var node = this.head; if(this.isEmpty() return false; while(node.next) if(node.data = obj) return true; node = node.next; / 第一个(length为1时)和最后一个元素 if(node.data = obj) return true; return false; , toString: function() var str = , node = this.head; if(this.isEmpty() return ; str = + node.data; while(node.next) node = node.next; str += , + node.data; str += ; return str; ;LinkedLtotype.constructor = LinkedList;return LinkedList; ();JSP页面测试部分-XXX.jspInsert title here / 双向链表测试 var list = new LinkedList(); list.add(0,one); list.add(1,two); list.addLast(three); list.addLast(four); list.add(2,five); /list.addFirst(five); /list.addLast(five); /console.log(list.size(); console.log(list.get(3);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宏观经济学讲义
- 2024技术员转正工作总结(15篇)
- 补偿性电容器行业行业发展趋势及投资战略研究分析报告
- “十三五”重点项目-龙胆碳酸氢钠项目可行性研究报告
- 专题07以抛物线为情境的定点问题-抛物线必会十大基本题型讲与练(原卷版)-高考数学圆锥曲线部分必会十大基本题型
- 中国电力建设行业发展现状、进出口贸易及市场规模预测报告
- 2024-2025学年高中物理第一章静电场第9节带电粒子在电场中的运动课时训练含解析新人教版选修3-1
- 2024-2025学年高中物理2.3匀变速直线运动的位移与时间的关系教案新人教版必修1
- 2024-2025学年高中语文第二单元难以忘怀的故事5铃兰花学案苏教版选修现代散文蚜
- 2024-2025学年高中物理第四章电磁波及其应用四信息化社会练习含解析新人教版选修1-1
- ISO9001ISO14001ISO45001外部审核资料清单
- 张岱年:《中国文化概论》
- 绘本成语故事:四面楚歌
- HCIE-Transmission H12-931认证培训考试题库汇总(含答案)
- 造血细胞与基本检验方法-细胞化学染色(血液学检验课件)
- 领子的分类详解课件
- 产品质量保证书
- 工厂员工消防安全培训内容
- 调节与集合的相关性 相对调节和相对集合的关系
- 《金融工程》课程教案
- 水轮机结构总体介绍
评论
0/150
提交评论