计算机基础第 1 / 4 章
结构选择、数组与栈
建立操作成本的整体认识,再进入连续存储和后进先出结构。
学习资料,参考 Hello 算法
什么是数据结构?
🏢 提示
是一种组织管理数据的一种方式 计算机中存储、组织数据的方式
线性结构 linear List
🏢 提示
线性结构是由n(n>=0)个元素(节点)a[0],a[1],a[2],a[3],...,a[n-1]组成的有限序列
- 数组
- 栈 受限的线性结构
- 链表
- 队列 受限的线性结构
数据结构详解
数组结构
🏢 提示
- 几乎每种编程语言都会提供的一种原生数据结构(语言自带)
- 可以借助数组杰鹏在来实现其他的数据结构,如 栈(stack),队列(queue),堆(heap) 优点:
- 数组的内存通常是连续的,所以数组通过下标值访问效率非常高 缺点:
- 当容量不足时需要扩容,会重新开辟一块新的内存空间
- 开头或者中间位置插入元素的开销很大,后面的元素都需要位移
栈结构
🏢 提示
是一种受限的线性结构,只能从一端入栈和出栈(栈顶),先进后出,后进先出 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
}
}