js-单向链表(insert,get,indexOf,update)

在上一节的基础上,我们来学习单向链表的insert,get,idnexOf,update操作

LinkList.prototype.insert=(position,data)=>{

// 1.对越界的position进行判断

//  对长度的判断

    if (position<0||position>this.length)return false

//    根据data 创建节点

    let newNode=new Node()

//    判断插入的位置是否是第一个

//    position代表的是下标值!

    if (position===0){

//这个可以画图理解,第一个节点为1,插入到第一个节点的时候,我们这样想

        //原来的this.head指针指向的是原来的第一个节点,我们现在将指针指向的原来的第一个节点赋值给新节点

        //在这个过程中,head的指针并不会发生变化,我再将head指向新节点,画图参考想,好理解!

        // 这样我们就实现了插入第一个节点的过程

        newNode.next=this.head;

        this.head=newNode

}else {

let index =0//下标

        let current =this.head//确认要插入的位置,比如插入在第6的位置,这个current代表的是6,

        let previous =null

        //我们就要插入的就是在6之前5之后,5用previous表示

        while (index++ < position) {

//在进行插入之前,previous总是在current的前一位

            previous = current

current = current.next

        }

newNode.next = current

previous.next = newNode

}

//    4.length

    this.length+=1

}

// 4.get方法

    LinkList.prototype.get=(position)=>{

// 1.越界判断

      if (position<0||position>this.length)return null

  //  2.获取对应的data

      let current=this.head;

      let index=0;

      while (index++

current=current.next

      }

return current.data

  }

//  5.indexOf方法

    LinkList.prototype.indexOf=(data)=>{

//    1.定义变量

        let current=this.head;

        let index=0

    //    2.查找变量

        while (current){

if (current.data===data){

return index

}

current=current.next

            index++;

            //    3.未查找到返回-1

        }

return -1

    }

//  6.updata方法

    LinkList.prototype.update=(position,newData)=>{

//  1.越界判断

        if (position<0||position>=this.length)return false

    //  2.查找判断

        let current=this.head;

        let index=0;

        while(index++

current=current.next

        }

//3.将position位置的node上的data更新为newData

        current.data=newData

return true

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。