如果说以家里鞋柜的角度来讲数据结构,那么一双鞋就是数据元素,鞋柜就是数据结构。
逻辑结构与存储结构
(1)逻辑结构包括集合,线性结构,树形结构,图状结构,它是用来描述数据元素之间的关系(一对一,一对多,多对多)。
(2)存储结构描述 实际存放数据元素的物理结构,它包括顺序存储、链式存储。****
两者之间的关系
。一种逻辑结构可以用多种物理结构来实现
。物理结构影响逻辑结构上的各种操作的复杂度
\
算法
。算法的特性:有穷,确定,可行,输入和输出
。算法的四个评价标准:正确性,可读性,健壮性,高效性
\
算法复杂度
它是一个保证,用O(数量级)表示
时间复杂度:最坏情况下需要多少时间来完成,注意常数复杂度不管是O(10)还是O(100)都默认为O(1)。
空间复杂度:最坏情况下需要多少额外的空间才一定能做完,注意,是额外的空间。
栈:后进先出 LIFO(last in first out)
它是受限制的线性表,只允许从表的一端操作,这端称为栈顶,另一端称为栈底。
压入元素(push):往栈顶新增一个元素,新元素成为新栈顶
弹出元素(pop):移除栈顶元素,原栈顶下的元素成为新栈顶 / 或栈变为空栈
\
\
队列:先进先出 FIFO(first in first out)
队列:受限制的线性表,只允许从表的两端操作,一端为队首,一端为队尾
入队(enqueue):往队尾新增一个元素,新元素成为新队尾
出队(dequeue):移出队首元素,下一个元素成为新队首 / 或队列变为空
\
栈和递归
函数的递归调用本质也是一个栈型调用,因此可以利用栈将一个递归函数改写为
完全等价的非递归函数,避免了操作系统层面的调用栈开销