




已阅读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年秋九年级历史上册 第12课 阿拉伯帝国说课稿 新人教版
- 11“变”出来的好效果说课稿小学综合实践活动第5册人教版
- 人教版初中历史与社会八年级上册 1.2.2 《诸侯争霸与社会变革》说课稿
- 4.2 开关电路与逻辑关系说课稿中职基础课-职业模块 工科类-语文版-(数学)-51
- Unit 3 Could you please clean your room Section B(2a-2e) 说课稿 2025-2026学年人教版八年级英语下册
- 1.2 .1科学测量 说课稿-浙教版七年级上册科学
- 《第四单元 建立网站 第13课 制作网站 一、创建站点》说课稿教学反思初中信息技术人教版七年级上册
- (正式版)DB65∕T 4304.3-2020 《核桃机械化加工设备 第3部分:核桃清洗机 操作规程》
- (正式版)DB65∕T 4216-2019 《沙枣育苗技术规程》
- 快递人员考试试题及答案
- 民兵学习护路知识课件
- 抵押房屋处置三方协议
- 股东出资证明书范本
- 山东省青岛市黄岛区 2024-2025学年七年级上学期期末考试英语试题(含解析无听力原文及音频)
- 2024年团校共青团入团积极分子考试题【附答案】
- 【艾青诗选】批注
- 新媒体新闻写作、编辑与传播(第2版) 课件 第4章 网络新闻编辑与传播
- 2024年度小米电子产品销售代理合同2篇
- 医院网络信息安全培训
- 2024年资助政策主题班会课件
- 食材采购合同范本
评论
0/150
提交评论