美文网首页
js 实现链表 并反转

js 实现链表 并反转

作者: 叫我魏大川 | 来源:发表于2020-04-15 17:15 被阅读0次

今天复习下链表,第一次使用js搞它,做个记录。
链表反转思路:在循环的过程中,使用了两个中间变量,来分别保存已翻转链最后一个节点和待翻转链的第一个节点。

<script>
// 测试链表
// 节点
class xiaoming{
  constructor(data){
    this.name = data
    this.next = null
  }
}
// 链表对象
class xiaomingHome{
  constructor(data){
    // 初始化头结点
    // this.head = new xiaoming('小明0')
    this.head = data
  }

  // 查找匹配name的第一个节点。
  findeNote(name){
    let xm = this.head
    while (xm) {
      if(xm.name == name){
        return xm
      }else{
        xm = xm.next
        if(!xm){
          return '没找到!'
        }
      }
    }
  }

  // 反转链表
  rollback(){
    let xm = this.head
    let zhongjian;
    let qianyige;
    while (xm) {
      zhongjian = xm.next
      console.log('当前 1', xm)

      if(qianyige){
        xm.next = qianyige
        console.log('前一个 1', qianyige)
      }else{
        xm.next = null;
      }
      qianyige = xm
      
      if(!zhongjian){
        this.head = xm
      }
      xm = zhongjian;
      console.log('下一个 1', xm)
    }
    
    console.log('反转结果', this.head)
  }
  

}

let xiaoming0; //头
let linshixiaoming; //临时小明
for(var i=0; i<5; i++){
  let xm = new xiaoming('小明'+i)
  if(linshixiaoming){
    linshixiaoming.next = xm
    linshixiaoming = xm
  }else{
    xiaoming0 = xm;
    linshixiaoming = xm;
  }
}

let lianbiao = new xiaomingHome(xiaoming0)
console.log(lianbiao)
let noteItem = lianbiao.findeNote('小明2')
console.log('00', noteItem)

lianbiao.rollback()

// let a1 = checkXiaoming(xiaoming0)
// 查看每个节点
// function checkXiaoming(xiaoming){
//   if(xiaoming.next){
//     checkXiaoming(xiaoming.next) 
//     console.log(xiaoming)
//   }else{
//     console.log(xiaoming)
//     return 'p'
//   }
// }


</script>

相关文章

  • js 实现链表 并反转

    今天复习下链表,第一次使用js搞它,做个记录。链表反转思路:在循环的过程中,使用了两个中间变量,来分别保存已翻转链...

  • 链表简单算法相关练习

    单链表反转: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 迭代方式实现: 复杂度分析: 时...

  • 反转单链表Java实现

    问题描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 解题思路 为了实现反转单链表,...

  • Python编程题44--反转链表

    题目 给定一个单链表的头节点 head ,请实现反转链表,并返回反转后的链表。 例如:原链表转换为列表:[1, 2...

  • 5个链表的常见操作

    链表 链表反转 LeetCode206:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 环路检...

  • 反转单链表(Java实现)

    如题: 定义一个方法(函数),实现输入一个链表的头结点,然后可以反转这个链表的方向,并输出反转之后的链表的头结点。...

  • 1. 反转单链表

    题目 定义一个方法,实现输入一个链表的头结点,然后可以反转这个链表的方向,并输出反转之后的链表的头结点。 解题之法...

  • 反转链表

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

  • 【教3妹学算法】2道链表类题目

    题目1:反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head ...

  • 实战高频leetcode题目

    1. 反转链表 : 反转链表是常见简单题目,定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点...

网友评论

      本文标题:js 实现链表 并反转

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