常见数据结构的基本操作

数组

添加元素

  • 添加一个元素到数组的最后位置 array.push(item),返回数组的长度

  • 在数组首位插入一个元素 array.unshift(item)

  • 在指定索引位置插入元素 array.splice(index, 0, item)

    splice() 第二个参数为 0 时,表示插入数据。

    let myArray = [1, 2, 3];
    // 在 索引 0 的位置,插入 A
    myArray.splice(0, 0, "A");
    console.log(myArray); //--> ['A', 1, 2, 3]
    
          
          
    • 1
    • 2
    • 3
    • 4

删除元素

  • 删除数组最后的元素 array.pop(item),返回被删除的元素

  • 删除数组首位的元素 array.shift(item)

  • 删除指定索引位置的元素 array.splice(start, number)
    例如:

    let myArray2 = [1, 2, 3, 4, 5];
    // 删除索引 4 位置起,2 个元素
    myArray2.splice(4, 2);
    console.log(myArray2); //--> [1, 2, 3]
    
          
          
    • 1
    • 2
    • 3
    • 4

修改元素

  • 修改指定索引位置的元素 array.splice(index, 1, item)

    let myArray3 = [1, 2, 3, 4, 5, 6];
    // 修改 索引 1 的位置的元素为 AA
    myArray2.splice(1, 1, "AA");
    console.log(myArray3); //--> [1, "AA", 3, 4, 5, 6]
    
          
          
    • 1
    • 2
    • 3
    • 4
  • 修改指定索引位置的几个元素 array.splice(index, number, item)

let myArray4 = [1, 2, 3, 4, 5, 6, 7];
// 在 索引 2 的位置起,修改两个元素为 AA BB
myArray2.splice(2, 2, "AA", "BB");
console.log(myArray3); //--> [1, 2, "AA", "BB", 5, 6, 7]

    
    
  • 1
  • 2
  • 3
  • 4

栈:

先进后出,后进先出。

限制:仅允许在表的一端进行插入和删除运算,这一端被称为栈顶。相对地,把另一端称为栈底。

在这里插入图片描述

常见操作:

  • push() 添加一个新元素到栈顶位置。
  • pop() 移除栈顶的元素,同时返回被移除的元素。
  • peek() 返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。
  • isEmpty() 如果栈里没有任何元素就返回 true,否则返回 false
  • size() 返回栈里的元素个数。这个方法和数组的 length 属性类似。
  • toString() 将栈结构的内容以字符串的形式返回。

队列:

先进先出。

限制:只允许在表的前端进行删除操作。在表的后端进行插入操作。

基于数组或链表实现。

在这里插入图片描述

常见操作:

  • enqueue(element) 向队列尾部添加一个(或多个)新的项。
  • dequeue() 移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
  • front() 返回队列中的第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息与 Map 类的 peek 方法非常类似)。
  • isEmpty() 如果队列中不包含任何元素,返回 true,否则返回 false。
  • size() 返回队列包含的元素个数,与数组的 length 属性类似。
  • toString() 将队列中的内容,转成字符串形式。

链表:

在这里插入图片描述

常见操作:

  • append(element) 向链表尾部添加一个新的项。
  • insert(position, element) 向链表的特定位置插入一个新的项。
  • get(position) 获取对应位置的元素。
  • indexOf(element) 返回元素在链表中的索引。如果链表中没有该元素就返回-1。
  • update(position, element) 修改某个位置的元素。
  • removeAt(position) 从链表的特定位置移除一项。
  • remove(element) 从链表中移除一项。
  • isEmpty() 如果链表中不包含任何元素,返回 trun,如果链表长度大于 0 则返回 false。
  • size() 返回链表包含的元素个数,与数组的 length 属性类似。
  • toString() 由于链表项使用了 Node 类,就需要重写继承自 JavaScript 对象默认的 toString 方法,让其只输出元素的值。

集合:

无序,不可重复的特殊数组

常见操作:

  • add(value) 向集合添加一个新的项。

  • remove(value) 从集合移除一个值。

  • has(value) 如果值在集合中,返回 true,否则返回false

  • clear() 移除集合中的所有项。

  • size() 返回集合所包含元素的数量。与数组的 length 属性类似。

  • values() 返回一个包含集合中所有值的数组。

    const set = new Set();
    
          
          
    • 1

字典:

键值对,一一对应,key不可以重复且无序,Value可以重复。

常见操作:

  • set(key,value) 向字典中添加新元素。
  • remove(key) 通过使用键值来从字典中移除键值对应的数据值。
  • has(key) 如果某个键值存在于这个字典中,则返回 true,反之则返回 false
  • get(key) 通过键值查找特定的数值并返回。
  • clear() 将这个字典中的所有元素全部删除。
  • size() 返回字典所包含元素的数量。与数组的 length 属性类似。
  • keys() 将字典所包含的所有键名以数组形式返回。
  • values() 将字典所包含的所有数值以数组形式返回。
	const map = new Map();

    
    
  • 1

二叉树:

1.一个二叉树第n层的最大节点数为:2^(n-1),n>=1

2.深度为k的二叉树的最大节点总数为:2^(k)-1,k>=1

3.叶子节点树代表a,非叶子节点个数b,a = b+1

a:H,E,I,J,G
b:A,B,C,F

在这里插入图片描述

二叉树的5种状态:

在这里插入图片描述

遍历方式:

前序:根左右

中序:左根右

后续:左右根

层次遍历:一层一层输出

与50位技术专家面对面
20年技术见证,附赠技术全景图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值