javascript算法-单链表
JavaScript算法 单链
2023-09-11 14:19:51 时间
链表相比数组更具灵活性和扩展性。主要有节点数据以及指向节点的指针所构成。
链表中节点的实现【元素和指针】:
let Node = function( element ){ this.element = element; this.next = null; };
单链表的实现:
function LinkedList(){ let Node = function( element ){ this.element = element; this.next = null; }; let head = null; let length = 0; this.append = function( element ){ let newNode = new Node( element ); let current = null; if( head == null ){ head = newNode; }else{ current = head; while( current.next ) { current = current.next; } current.next = newNode; } length++; }; this.size = function(){ return length; }; this.removeAt = function( pos ){ if( pos > -1 && pos < length ){ var current = head, index = 0, prev = null; if( pos == 0 ){ head = current.next; }else{ while( index++ < pos ){ prev = current; current = current.next; } prev.next = current.next; length--; return current.element; } }else{ return null; } }; this.print = function(){ let current = head; while( current ){ console.log( current.element ); current = current.next; } }; this.insert = function( pos, element ){ let newNode = new Node( element ); let current, prev, index = 0; current = head; if( pos >= 0 && pos <= length ){ if( pos == 0 ){ newNode.next = head; head = newNode; }else{ while( index++ < pos ){ prev = current; current = current.next; } newNode.next = current; prev.next = newNode; } length++; return true; }else { return false; } }; this.toString = function(){ let current = head, string = ''; while( current ){ string += current.element + ','; current = current.next; } return string.substring( 0, string.length - 1 ); }; this.indexOf = function( element ){ let current = head, index = -1; while( current ){ index++; if( current.element == element ){ return index; } current = current.next; } return -1; }; this.remove = function( element ){ let pos = this.indexOf( element ); return this.removeAt( pos ); }; this.isEmpty = function(){ return length == 0; }; this.getHead = function(){ return head; } } var oLink = new LinkedList(); oLink.append( "java" ); oLink.append( "php" ); oLink.append( "javascript" ); oLink.append( "python" ); oLink.print(); console.log( "-----------------------节点个数------------------------") console.log( oLink.size() ); console.log( "-----------------------删除第2个元素之前------------------------") console.log( oLink.removeAt( 2 ) ); console.log( "-----------------------删除第2个元素之后------------------------") oLink.print(); console.log( "节点个数"); console.log( oLink.size() ); console.log( "-----------------------插入节点前------------------------") oLink.insert( 0, "c语言" ); oLink.insert( 3, "c++语言" ); console.log( "-----------------------插入节点后------------------------") oLink.print(); oLink.insert( 4, "erlang语言" ); console.log( "-----------------------插入节点后------------------------") oLink.print(); console.log( "-----------------------节点个数------------------------") console.log( oLink.size() ); console.log( "-----------------------toString------------------------") console.log( oLink.toString() ); console.log( "------------------------indexOf-----------------------" ); console.log( oLink.indexOf( "c语言2" ) ); console.log( "------------------------clear-----------------------" ); oLink.print();
相关文章
- JavaScript动画实例:递归分形图动态展示
- 【学习笔记59】JavaScript原型的理解
- 25dwr - DWR中的JavaScript(查找回调函数)
- javascript book
- JavaScript里实现继承的几种方式
- JavaScript学习之路-为什么要学习JavaScript语法
- javascript中的Base64.UTF8编码与解码详解
- 《深入理解JavaScript》——1.3 变量和赋值
- 《深入理解JavaScript》——1.6 数字
- Javascript的那些硬骨头:作用域、回调、闭包、异步……
- javascript代码重构之:写好函数
- 华为OD机试 - 数列还原(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 运动会(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 叠放书籍(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -统计匹配的二元组个数(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 寻找路径(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -最小叶子节点(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 停车场最大距离(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 太阳能板的安装(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 最长合法表达式(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 众数和中位数(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- Selenium 利用javascript 控制滚动条
- Google Code Pretiffy 代码 着色 高亮 开源 javascript(JS)库
- JavaScript经典实例之分页(简单易用)原生js封装分页(一次性数据)
- JavaScript高级程序设计学习笔记--事件