数据结构:
(1)逻辑结构(2)存储结构(3)数据的运算
从逻辑上讲,数据结构有,线性结构和非线性结构
线性表是一个典型的线性结构。栈、队列、串等都是线性结构
数组、广义表、树和图等数据结构都是非线性结构。
从存储上有:顺序存储,链式存储,索引存储方法,散列存储方法
顺序存储。该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。
链式存储,该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系由附加的指针字段表示。由此得到的存储表示称为链式存储结构(Linked Storage Structure),通常借助于程序语言的指针类型描述。
索引存储方法,该方法通常在储存结点信息的同时,还建立附加的索引表
散列存储方法,该方法的基本思想是:根据结点的关键字直接计算出该结点的存储地址。
存储结构和数据的运算是数据结构不可缺少的方面:同一逻辑结构的不同存储结构或不同的运算可冠以不同的数据结构名称来标识。
【例】线性表是一种逻辑结构,若采用顺序方法的存储表示,可称其为顺序表;若采用链式存储方法,则可称其为链表;若采用散列存储方法,则可称为散列表。
【例】若对线性表上的插入、删除运算限制在表的一端进行,则该线性表称之为栈;若对插入限制在表的一端进行,而删除限制在表的另一端进行,则该线性表称之为队列。
更进一步,若线性表采用顺序表或链表作为存储结构,则对插入和删除运算做了上述限制之后,可分别得到顺序栈或链栈,顺序队列或链队列。
算法
非形式地说,算法是任意一个良定义的计算过程。它以一个或多个值作为输入,并产生一个或多个值作为输出。
算法时间复杂度
算法时间复杂度总是和问题规模对应的。记做T(n)
比如T(n)=3n^3+n+5
如果某个函数fn,使t(n)/f(n)当无穷大时,趋向一个常数。如f(n)=n^3 .t(n)/f(n)=>3.
那么t(n)=3n^3+n+5=O(f(n))=O(n^3),称O(f(n))为算法的渐进时间复杂度。这里的“O”表示量级 (order),
数学还给老师了。先复习一下。
一个等式:2^3=8
乘方
2^3=x,
x=8