美文网首页
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 实现链表 并反转

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