JS数据结构算法----列表

(一)列表的操作

(二)实现列表类(利用数组实现)

class List {
      constructor() {
        this.pos = 0 // 列表当前位置
        this.dataList = [] // 列表数组 初始化为空
      }

      // 清空列表中所有元素
      clear () {
        this.dataList = []
        this.pos = 0
      }

      // 在列表中查找某一元素 找到返回索引 没找到返回-1
      find (value) {
        for (var i = 0; i < this.dataList.length; i++) {
          if (value === this.dataList[i]) {
            return i
          }
        }
        return -1
      }

      // 返回列表
      getList () {
        return this.dataList
      }

      // 插入 把value插入到index位置
      insert (value, index) {
        if (index <= this.dataList.length) {
          this.dataList.splice(index, 0, value)
          return true
        }
        return false
      }

      // 列表末尾插入元素
      append (value) {
        this.dataList.push(value)
      }

      // 删除列表元素 删除成功返回true 否则返回false
      remove (value) {
        var index = this.find(value) // 先判断存不存在
        if (index > -1) {
          this.dataList.splice(index, 1)
          return true
        }
        return false
      }

      // 将列表当前位置移动到第一个元素
      front () {
        this.pos = 0
      }

      // 列表中有多少元素
      length () {
        return this.dataList.length
      }
      
      // 将列表当前位置移动到第一个元素
      end () {
        this.pos = this.dataList.length - 1
      }

      // 当前位置前移一位
      prev () {
        if (this.pos > 0) {
          --this.pos
        }
      }

      // 当前位置后移一位
      next () {
        if (this.pos < this.dataList.length-1) {
          ++this.pos
        }
      }

      // 判断是否有前一位
      hasPrev () {
        return this.pos > 0
      }

      // 判断是否有后一位
      hasNext () {
        return this.pos < this.dataList.length
      }

      // 返回列表的当前位置
      currPos () {
        return this.pos
      }

      // 当前位置移动到指定位置
      moveTo (index) {
        this.pos = index
      }

      // 获取当前位置的元素
      getElement () {
        return this.dataList[this.pos]
      }
    }

    var names = new List()
    names.append('Cynthia')
    names.append('Raymond')
    names.append('Barbara')
    console.log(names.getList()) // ["Cynthia", "Raymond", "Barbara"]
    names.remove('Raymond')
    names.insert('Raymond', 2)
    console.log(names.getList()) // ["Cynthia", "Barbara"]
    names.front()
    console.log(names.getElement()) // Cynthia
    names.next()
    names.prev()
    console.log(names.hasNext())
    console.log(names.hasPrev())
    console.log(names.getElement()) // Cynthia

 

你可能感兴趣的:(js数据结构和算法)