已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027年湖北省英语初三命题预测卷(含答案)
- 2027年陕西省英语初三考前押题卷(含答案)
- 2027年宁夏回族自治区英语初三鲁教版冲刺提分卷(含答案)
- 2027年山东省道德与法治初三考前最后冲刺卷(含答案)
- 2027年广东省英语初三人教版易错专项练(含答案)
- 冲刺期末 2026年秋季初三道德与法治部编版12月月考试卷(含答案)
- 冲刺期末 2026年秋季高三语文部编版上学期期中测试卷(含答案)
- 事业编融媒体宣传岗 2026 面试专项练习试卷 含答案解析
- 河北事业编计算机岗 2026 易错题试卷 含解析
- 2026 事业编计算机岗面试真题汇编
- T/QX 011-2025管壳式热交换器管程高压水射流机械化清洗作业安全规范
- 小学生综合素质评价方案
- 2026统编版九年级历史上册全册教材问题答案
- 小型水库除险加固项目地质灾害危险性评估报告
- 新时代中职生礼仪规范全套课件
- 2025年华为光芯片笔试题及答案
- 内保单位安全管理条例
- (正式版)DB61∕T 1511-2021 《托幼机构消毒卫生规范》
- 肘关节超声病变的超声诊断与评估
- DB11∕T 637-2024 房屋结构综合安全性鉴定标准
- 混凝土防撞护栏施工方案
评论
0/150
提交评论