数据结构-- 基础概念与栈

152 阅读2分钟

如果说以家里鞋柜的角度来讲数据结构,那么一双鞋就是数据元素,鞋柜就是数据结构。

逻辑结构与存储结构

(1)逻辑结构包括集合,线性结构,树形结构,图状结构,它是用来描述数据元素之间的关系(一对一,一对多,多对多)。

(2)存储结构描述 实际存放数据元素的物理结构,它包括顺序存储、链式存储。****

两者之间的关系

。一种逻辑结构可以用多种物理结构来实现

。物理结构影响逻辑结构上的各种操作的复杂度

\

算法

。算法的特性:有穷,确定,可行,输入和输出

。算法的四个评价标准:正确性,可读性,健壮性,高效性

\

算法复杂度

它是一个保证,用O(数量级)表示

时间复杂度:最坏情况下需要多少时间来完成,注意常数复杂度不管是O(10)还是O(100)都默认为O(1)。

空间复杂度:最坏情况下需要多少额外的空间才一定能做完,注意,是额外的空间。

栈:后进先出 LIFO(last in first out)

它是受限制的线性表,只允许从表的一端操作,这端称为栈顶,另一端称为栈底。

压入元素(push):往栈顶新增一个元素,新元素成为新栈顶

弹出元素(pop):移除栈顶元素,原栈顶下的元素成为新栈顶 / 或栈变为空栈

\

\

队列:先进先出 FIFO(first in first out)

队列:受限制的线性表,只允许从表的两端操作,一端为队首,一端为队尾

入队(enqueue):往队尾新增一个元素,新元素成为新队尾

出队(dequeue):移出队首元素,下一个元素成为新队首 / 或队列变为空

\

栈和递归

函数的递归调用本质也是一个栈型调用,因此可以利用栈将一个递归函数改写为

完全等价的非递归函数,避免了操作系统层面的调用栈开销