js+链表

作者: bigtom | 来源:发表于2016-08-16 23:23 被阅读85次

链表结构

function Node(val, next){
  this.val = val
  this.next = next || null
}

function LinkedList(head){
  this.head = head || null
}

## 链表中插入节点
```js
LinkedList.prototype.insert = function(index, data){
  if (index < 0) return
  if (index == 0){   //插在头部
    this.head = new Node(data, this.head)
    return
  }
  var p = this.head
  var post
  var j = 0
  while (j < index){
    post = p
    if(!p) throw new Error("链表没那么长")
    p = p.next
    j += 1
    if (index == j){
      q = new Node(data, p)
      post.next = q
    }
  }
}

删除链表某节点

LinkedList.prototype.remove = function(index){
  if (index < 0) return
  var result
  if (index == 0) {   //删除头
    result = this.head.val
    this.head = this.head.next
    return result
  }
  var p = this.head
  var j = 0
  while (j < index - 1){
    p = p.next
    if(!p || !p.next) throw new Error("链表没那么长")
    j += 1
  }
  result = p.next.data
  p.next = p.next.next
  return result
}

遍历

LinkedList.prototype.getAllData = function(){
  p = this.head
  var result = []
  while(p){
    result.push(p.val)
    p = p.next
  }
  return result
}

反转单链表

LinkedList.prototype.reverse = function(){
  if (!this.head || !this.head.next){return}
  var cur = this.head
  var pre = null
  var tmp
  while (cur){
    tmp = cur.next
    cur.next = pre
    pre = cur
    cur = tmp
  }
  this.head = pre
}

相关文章

  • js+链表

    链表结构 删除链表某节点 遍历 反转单链表

  • js+树

    最近要开始找工作啦,很久很久之前用python和java刷过刷数据结构和算法,现在已经记忆模糊了。而且从来没有用j...

  • js+排序

    快排 归并排序

  • react 与 vue有什么不同?

    1 语法不同 1)vue 采用template模板(html)+js+样式(less,sass,css)的形...

  • 前端面试常见问题汇总

    原生JS+浏览器部分:1、数组函数+字符串函数2、get、post请求 (区别)3、深拷贝、浅拷贝4、事件代理(委...

  • 2019-01-16

    多用型后台管理系统,目前采用原生JS+原生的PHP来进行开发,前端与后端的数据交互采用axios库来进行,目前没有...

  • 5.25日初学JS+案例

    //三种输出方式: // alert();//页面弹框 // document.write();//在页面打印...

  • 什么是ECMAScript

    有的同学可能会好奇,为什么js的版本要用es+年份(例如es2015,es2016等),而不是js+年份,这就要说...

  • 链表基础

    链表基础 链表长度 链表为空 链表结构 链表增加

  • 双向链表&双向循环链表

    链表分为:单链表、单向循环链表、双向链表、双向循环链表本节主要说明:双向链表、双向循环链表 定义结点 一、双向链表...

网友评论

      本文标题:js+链表

      本文链接:https://www.haomeiwen.com/subject/flapsttx.html