数据 数据结构 和数据项 数据:所有被计算机存储和处理的对象 数据元素:数据的基本单位,数据元素由数据项组成。 数据项:又称为字段或域,数据元素由数据项组成。
数据的逻辑结构 数据元素之间的关联方式或“邻接关系” 集合 线性结构 树形结构 图结构
数据的存储结构 包括两部分:存储数据元素、数据元素之间的关联关系 存储方式:顺序存储、链式存储(数据域+指针域)、索引存储方式和散列存储方式
算法分析 逻辑结构的加工叫做运算,运算的实现是该运算的算法。 评价:健壮性、易读性、正确性、时空性
时间复杂度:关键字的比较次数和记录的移动次数 常数阶O(1)、对数阶、线性阶O(n)、多项式阶、指数阶空间复杂度:一般主需要分析辅助变量所占用的空间
线性表:结点一对一的关系线性表的顺序存储:一般使用数组来表示顺序表插入:在顺序表长为n, 在第i个元素之前插入一个新元素,需要移动元素个数为n-i+1 插入算法的平均移动次数为n/2,时间复杂度为O(n)删除:在第i个元素之后删除一个元素,需要移动元素个数为n-i 删除算法的平均移动次数为(n-1)/2,时间复杂度为O(n)线性表的链式存储:单链表:数据元素用指针链接起来的存储结构 数据域data+指针域next 空单链表:head==Null循环链表:在单链表中,最后一个结点的指针域指向第一个结点双向循环链表:在单链表的每个结点中再设置一个指向其直接前驱结点的指针域prior
栈:后进先出 进栈前,判断是否栈满;出栈前,判断栈是否是空栈 双栈:仅当两个栈的站定位置在中间相遇是(top1+1)=top2才发生“上溢” top1 = 0是栈1为空栈;top2=max-1时栈2为空栈。
队列:先进先出 顺序队列三个域:data、front:指向队列首元素的第一个单元、rear指向实际的队列尾元素单元 队列满:((CQ.rear+1)%maxsize==CQ.front) 队列空:(CQ.rear==CQ.front)
数组: 存储方式:列、行 以行为主序:起始地址+(( n * i )+ j ) * k 【n=j+1】 n=行数 j =列数 k =存储单元 起始地址 + i * 全部列数 * k + j * k
矩阵的压缩存储:特殊矩阵(对称、三角)和稀疏矩阵 稀疏矩阵的三元组表示法: ( i, j, v ) i = 行 j = 列 v = 非零元素的值
