使用js对链表数据结构的实现
来源:互联网 发布:猎人同人知之四时蝶 编辑:程序博客网 时间:2024/06/16 19:06
使用JS对链表数据结构的实现
- 看数据结构的书大多对各种数据结构算法的实现都是使用c,所以自己用JS写了一个,也可以加深对数据结构的理解
class Node { constructor(data) { this.data = data; this.next = null; }}class List { constructor() { this.head = new Node('head'); }; //往头部插入 prevInsert(data) { var newNode = new Node(data); newNode.next = this.head.next; this.head.next = newNode; }; //查询链表,显示链表中对index个元素,如果不传则会展示整个链表 show(index) { if (index) { var currNode = this.head; for (let i = 0; i < index; i++) { var nextNode = currNode.next; currNode = nextNode; } console.log(currNode) } else { var currNode = this.head; var nextNode; while (currNode.next) { nextNode = currNode.next; currNode = nextNode; console.log(currNode) } } }; //往尾部插入 nextInsert(data) { var currNode = this.head; var nextNode; while (currNode.next) { nextNode = currNode.next; currNode = nextNode; } if (!currNode.next) { currNode.next = new Node(data) } }; //查询函数,如果传入数字就查找索引,传入内容就查找内容 find(index) { var currNode = this.head; var nextNode; var flag = 1; if (typeof(index) === 'number' && index > 0) { //如果是数字的话 while (1) { nextNode = currNode.next; currNode = nextNode; if (flag == index) { console.log(currNode); return; } if (!currNode.next) { console.log('索引大于链表长度'); return; } flag++; } } else { //传入参数不是数字,则解析为内容 while (1) { nextNode = currNode.next; currNode = nextNode; if (currNode.data == index) { console.log(currNode); return; } if (!currNode.next) { console.log('查找内容不在链表中'); return; } } } }; //插入到指定位置 indexInsert(index, data) { var currNode = this.head; var nextNode; var flag = 0; while (1) { nextNode = currNode.next; currNode = nextNode; if (flag == index - 1) { var newNode = new Node(data); newNode.next = currNode.next currNode.next = newNode; return; } flag++ } }; //删除指定位置,或删除指定内容 delete(index) { var prevNode; var currNode = this.head; var nextNode; var flag = 1; if (typeof(index) === 'number') { while (1) { prevNode = currNode; nextNode = currNode.next; currNode = nextNode; if (flag === index) { prevNode.next = currNode.next return; } if (!currNode.next) { console.log('索引超出链表长度'); return; } flag++ } } else { while (1) { prevNode = currNode; nextNode = currNode.next; currNode = nextNode; if (currNode.data === index) { prevNode.next = currNode.next return; } if (!currNode.next) { console.log('链表没有此元素'); return; } } } };}var list = new List();list.nextInsert('fir');list.nextInsert('sec');list.nextInsert('thr');list.nextInsert('four');list.delete('thr')list.show()
阅读全文
0 0
- 使用js对链表数据结构的实现
- JS的基本数据结构实现---线性表
- 对java数据结构的实现
- 数据结构:用JS实现链表
- 数据结构之链表的使用与实现
- 数据结构:线性表删除操作的php和js实现
- 数据结构:线性表删除操作的php和js实现
- 链表数据结构的实现
- 数据结构-链表的实现
- 使用java实现双向链表数据结构
- 使用外置js实现对html的页面做一些增删改查的操作
- JS实现对TreeView的全选
- Js、Jquery对goTop功能的实现
- C#版的数据结构(对链表的操作)
- 使用js实现对table的动态添加、删除和更新
- 算法数据结构 顺序表的实现+操作 及对产生问题的分析
- [数据结构]对链表、栈、队列的总结
- JS 对浏览器cookie的使用
- 单例模式
- 欢迎使用CSDN-markdown编辑器
- 使用directjngine、Ext Direct调用服务器端Java方法
- 学习笔记0717-TCP/IP协议入门
- codeforces 681C. Heap Operations(优先队列+模拟)
- 使用js对链表数据结构的实现
- C++实现动态增长数组
- R中五种常用的统计分析方法
- BIBTeX制作参考文献
- UVA 11374 Airport Express(最短路+枚举)
- BFS 中国象棋中的跳马问题 (棋盘障碍)
- java class文件布局架构
- C# DataTable去重,根据列名去重保留其他列
- 重要知识点