1. JS实现一个基于对象的链表
  1. /*JS实现一个基于对象的链表*/
  2.  
  3. function Node(element){
  4. this.element = element;//节点存储的元素
  5. this.next = null;//节点指向的下一个节点,这里先设置为空
  6. }
  7.  
  8. function LList(){
  9. this.head = new Node("head");//生成一个头节点
  10. this.find = find;//在链表中找到某个节点
  11. this.insert = insert;//在链表中某个元素后面插入某个节点元素
  12. this.display = display;//在将链表中的节点元素显示出来
  13. this.findPrevious = findPrevious;//找到某个节点的上一个节点
  14. this.remove = remove;//删除某个节点
  15. }
  16.  
  17. function remove(item) {
  18. var prevNode = this.findPrevious(item);
  19. if (!(prevNode.next == null)) {
  20. prevNode.next = prevNode.next.next;
  21. }
  22. }
  23.  
  24. function findPrevious(item) {
  25. var currNode = this.head;
  26. while (!(currNode.next == null) &&
  27. (currNode.next.element != item)) {
  28. currNode = currNode.next;
  29. }
  30. return currNode;
  31. }
  32.  
  33. function display() {
  34. var currNode = this.head;
  35. var nodestr = "";
  36. while (!(currNode.next == null)) {
  37. nodestr +=" "+currNode.next.element;
  38. currNode = currNode.next;
  39. }
  40. console.log(nodestr);
  41. }
  42.  
  43. function find(item) {
  44. var currNode = this.head;
  45. while (currNode.element != item) {
  46. currNode = currNode.next;
  47. }
  48. return currNode;
  49.  
  50. }
  51.  
  52. function insert(newElement, item) {
  53. var newNode = new Node(newElement);
  54. var current = this.find(item);
  55. newNode.next = current.next;
  56. current.next = newNode;
  57. }
  58.  
  59. /*测试例子*/
  60. var num = new LList();
  61. num.insert("a1","head");
  62. num.insert("b1","a1");
  63. num.insert("c1","b1");
  64. num.display();//  a1  b1  c1
  65. num.remove("b1");
  66. num.display();//  a1  c1

JS实现一个基于对象的链表的更多相关文章

  1. javascript创建一个基于对象的栈结构

    上篇博客介绍了基于数组创建一个栈,这是用对象创建一个栈 s1.声明一个Stack类 class Stack { constructor() { this.count = 0; this.items = ...

  2. 如何使用irealtime.js实现一个基于websocket的同步画板

    同步画板演示 同时打开2个tab,分别在画布上写下任意内容,观察演示结果,同时可设置画笔颜色及线条宽度.演示地址 初始化画布 <canvas id="drawBoard" w ...

  3. 【转】js判断一个object对象是否为空

    判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in... 遍历属性,为真则为“非空数组”:否则为“空数组” for (var i in obj) { // 如果不为空 ...

  4. js判断一个 object 对象是否为空

    方法一:使用for...in for...in... 遍历属性,为真则为“非空数组”:否则为“空数组” for (var i in obj) { return true  // 如果不为空,则会执行到 ...

  5. 重学前端--js是面向对象还是基于对象?

    重学前端-面向对象 跟着winter老师一起,重新认识前端的知识框架 js面向对象或基于对象编程 以前感觉这两个在本质上没有什么区别,面向对象和基于对象都是对一个抽象的对象拥有一系列的行为和状态,本质 ...

  6. JS基础:基于原型的对象系统

    简介: 仅从设计模式的角度讲,如果我们想要创建一个对象,一种方法是先指定它的类型,然后通过这个类来创建对象,例如传统的面向对象编程语言 "C++"."Java" ...

  7. 教你如何使用Java手写一个基于链表的队列

    在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使 ...

  8. js面向(基于)对象编程—类(原型对象)与对象

    JS分三个部分: 1. ECMAScript标准--基础语法 2. DOM  Document Object Model 文档对象模型 3. BOM  Browser Object Moldel 浏览 ...

  9. 聊聊高并发(三十二)实现一个基于链表的无锁Set集合

    Set表示一种没有反复元素的集合类,在JDK里面有HashSet的实现,底层是基于HashMap来实现的.这里实现一个简化版本号的Set,有下面约束: 1. 基于链表实现.链表节点依照对象的hashC ...

随机推荐

  1. C++之类和对象课后习题1

    建立一个对象数组,内放5个学生的(学号,成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生的最高成绩者,并输出其学号. #include<iostream> ...

  2. UVa 11636 Hello World! (水题思维)

    题意:给你一个数,让你求需要复制粘贴多少次才能达到这个数. 析:这真是一个水题,相当水,很容易知道每次都翻倍,只要大于等于给定的数就ok了. 代码如下: #include <iostream&g ...

  3. #include 和 #import 的区别, @class 的含义

    #import 和 #include  会包含这个类的所有信息,包括实体变量和方法 而#include比起 #import的好处不会引起重复包含 @class是用来做类引用的 @class就是告诉编译 ...

  4. hdu 2149

    题目 巴什博奕(Bash Game) 巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一 ...

  5. hdu 4996 1~n排列LIS值为k个数

    http://acm.hdu.edu.cn/showproblem.php?pid=4996 直接贴bc题解 按数字1-N的顺序依次枚举添加的数字,用2N的状态保存在那个min数组中的数字,每次新添加 ...

  6. EBS Archiving and Purging: You Know you need to

    A number of trends in the IT industry have contributed to the increasing size of ERP application dat ...

  7. [leetcode] 21. Implement strStr()

    这个题目是典型的KMP算法,当然也可以试试BM,当然有关KMP和BM的介绍阮一峰曾经写过比较好的科普,然后july也有讲解,不过那个太长了. 先放题目吧: Implement strStr(). Re ...

  8. 在 IIS8 中保持网站持续运行

    在早期版本的 IIS 中执行轮询任务不那么可靠.应用程序池回收后,网站不会自动重启,在新的请求激活应用程序之前,轮询任务不起作用.为了解决这个问题,需要引入外力驱动 Web 端执行任务,如图: 此方式 ...

  9. 基于jTopo的拓扑图设计工具库ujtopo

    绘制拓扑图有很多开源的工具,知乎上也有人回答了这个问题: https://www.zhihu.com/question/41026400/answer/118726253 ujtopo是基于jTopo ...

  10. 编译Bootstrap,定制自己的模板

    完全不懂LESS,也懒的去学习它,凭多年的经验,感觉也不用专门花时间去学习了.反正它应该是很成熟的,能执行即可.我用的是WIN7,为了定制颜色等各种特性,需要重新编译Bootstrap.在网上到处中, ...