数组结构
优点:数组通过下标取值进行操作时,效率是很高的,能直接定位到具体位置拿出来给你操作修改。链表的查找对此的话效率就很低,很不适合
缺点:数组在做头部插入或者删除操作的时候,性能都比较低。链表结构对此性能就很好,数组不支持节点位置动态扩容,每次插入和删除都需要移动其他元素位置来支持
- 插入,他把把插入位置的后面元素都先往后移动,空出来的位置给要插入的元素
- 删除,他把该位置的元素删除后,后面的元素都往前移动
栈结构
栈是受限的线性结构,是后进先出(LIFO)规则。
特点:上端进栈,上端出栈。(只能从上端操作)
例子:
- 函数调用也称函数调用栈
a函数调用b, b函数调用c。a函数先压入栈,然后b,然后c。执行顺序 是c先执行完出栈,然后 b, a顺序出栈。
- 递归调用
栈的实现:
- 基于数组实现
- 基于链表实现
队列结构
队列是受限的线性结构, 是先进先出原则(FIFO)
特点:只能是前端移除操作,后端添加操作
场景例子:
- 打印机打印
- 排队买东西
队列的实现:
- 基于数组实现
- 基于链表实现