Visual LabINTERACTIVE LEARNING
计算机基础第 1 / 4 章

结构选择、数组与栈

建立操作成本的整体认识,再进入连续存储和后进先出结构。

数组链表
进阶预计 38 分钟查看源文 ↗

学习资料,参考 Hello 算法

什么是数据结构?

🏢 提示

是一种组织管理数据的一种方式 计算机中存储、组织数据的方式

线性结构 linear List

🏢 提示

线性结构是由n(n>=0)个元素(节点)a[0],a[1],a[2],a[3],...,a[n-1]组成的有限序列

  1. 数组
  2. 栈 受限的线性结构
  3. 链表
  4. 队列 受限的线性结构

数据结构详解

数组结构

🏢 提示

  1. 几乎每种编程语言都会提供的一种原生数据结构(语言自带)
  2. 可以借助数组杰鹏在来实现其他的数据结构,如 栈(stack),队列(queue),堆(heap) 优点:
  3. 数组的内存通常是连续的,所以数组通过下标值访问效率非常高 缺点:
  4. 当容量不足时需要扩容,会重新开辟一块新的内存空间
  5. 开头或者中间位置插入元素的开销很大,后面的元素都需要位移

栈结构

🏢 提示

是一种受限的线性结构,只能从一端入栈和出栈(栈顶),先进后出,后进先出 last in First Out (LIFO) 只能从栈顶入栈,栈底的元素无法获取,栈顺序无法修改 出栈后,相邻的元素成为栈顶


interface IStack<T> {
  push(element:T):void
  peek():T|undefined
  pop():T|undefined
  size():void
}

class  Stack<T= any> implements IStack<T> {
  private data :T[]= [] 
  push(element:T){
    this.data.push(element)
  }
  peek():T|undefined{
    return this.data[this.data.length-1]
  }
  pop():T|undefined{
    return this.data.pop()
  }
  size(){
    return this.data.length
  }
}