数据结构是指相互之间存在一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。
简单来说:数据结构就是设计数据以何种方式组织并存储在计算机中。
比如:列表、集合、字典等都是一种数据结构。

N.Wirth: 程序 = 数据结构 + 算法

数据结构: 逻辑结构和物理结构
数据逻辑结构又分:

  1. 线性结构: 元素存在一对一的相互关系
  2. 树结构:元素存在一对多 的相互关系
  3. 图结构:元素存在多对多的相互关系

列表/数组

关于列表的问题:

  • 列表中的元素是如何存储的?
  • 列表的基本操作:查找、插入、删除。。。。
  • 这些操作的时间复杂度是多少?

    32位机器上,一个整数占4字节,一个地址占4个字节 63位机器上,一个整数占8字节,一个地址占4个字节

数组和列表的不同:

  • 数组元素类型要相同
  • 数组长度固定

    栈是一种数据集合,可以理解为只能在一端进行插入或者删除操作的列表。
    栈的特点:后进先出
    栈的概念:栈顶、栈底
    栈的基本操作:

  • 进栈(压栈):push

  • 出栈:pop
  • 取栈顶: gettop

image.png

队列

队列Queue是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。

  • 进行插入的一端称为队尾(rear), 插入动作称为进队或入队
  • 进行删除的一端成为队头(front), 删除动作称为出队
  • 队列的性质:先进先出

image.png

队列是否能用列表简单实现?为什么?

image.png

队列-环形队列

image.png
image.png