1、2、 顺序表的表示#define MAXSIZE 100 Typedef struct ElemType *elem; int length; / 数据元素个数 SqList; /定义数据类型 SqList L; /定义变量3、 顺序表的操作(1) 随机存取:Loc(ai)=Loc(a1)+(i-1)*C(2) 为空、为满的判定 为空:Llength=0 为满:Llength=MAXSIZE(3) 插入、删除操作特征及时间复杂度分析 基本操作:移动元素 插入: 删除: 注意:下标和位序的关系4、 链表的表示Typedef struct LNode ElemType data; Struct L
2、Node *next; LNode, *LinkList;/ Typedef Lnode *LinkList;5、 链表的操作(1) 为空的判定:L-next=NULL/L=NULL(2) 插入、删除操作特征及时间复杂度分析基本操作:顺链扫描,操作点定位插入、删除:指针的修改3、 栈和队列1、 栈和队列的特点和应用2、 顺序栈的表示Typedef struct SElemType *base; SElemType *top; int stacksize; SqStack;3、 顺序栈为空、为满的判定s.top=s.bases.top-s.base=s.stacksize4、 循环队列的表示#d
3、efine MAXQSIZE 100 QElemType *base; int front; int rear; SqQueue;5、 循环队列为空、为满的判定Q.rear=Q.frontQ.front=(Q.rear+1)% MAXQSIZE4、 树和二叉树1、 二叉树的链式存储表示Typedef struct BiTNode TElemType data; struct BiTNode *lchild, *rchild; BiTNode, *BiTree;2、 二叉树的性质(1)第i层最多2i-1(2)深度k最多2k-1(3)任意二叉树:n0=n2+1(4)完全二叉树:n个结点深度k=lo
4、g2n+1(5)完全二叉树:结点iParent(i)=i/2; 结点iLChild(i)=2i;结点iRChild(i)=2i+1 完全二叉树结点数、结点编号的确定例1:深度为k的完全二叉树中,编号最小和最大的叶结点的编号是多少?例2:一棵有 240 个叶结点的完全二叉树,最少有多少个结点?最多呢?例3:一棵完全二叉树的第7层有10个叶结点,则该完全二叉树最多有多少个结点?3、 二叉树的遍历算法(1) 二叉树遍历序列(2) 遍历序列二叉树(3) 二叉树遍历的递归代码五、图1、有向图和无向图的基本概念 n个顶点的无向完全图,有n*(n-1)/2条边;n个顶点的有向完全图,有n*(n-1)条弧;n
5、个顶点的无向连通图,最少有n-1条边3、最小生成树的定义和构造(Prim和Kruscal算法) Prim算法T=O(n2)稠密图 Kruscal算法T=O(eloge)稀疏图4、拓扑排序和关键路径算法 拓扑排序判断能否完工 关键路径求得完工最短时间六、查找1、顺序查找的性能2、折半查找(1)前提:顺序存储;关键字有序(2)过程:mid=low+high)/2(向下取整)(3)关键字比较次数3、二叉排序树查找(1)递归定义和查找 (2)动态构造和平衡化(3)BBST的ASL例:在具有24个结点的平衡二叉排序树中进行关键字查找,查找成功的情况下,平均查找长度ASL为多少?4、哈希查找(1)哈希函数:除留余数法H(key)=key % p (p=m) (2)冲突函数:开放定址法 Hi =H(key)+di % m 线性探测:di=1,2,m-1二次探测:di=12,-12,22,-22,-k2 (km/2)七、排序1、复习思路(1)算法思想:排序原则和排序过程(2)算法性能:时间和空间复杂度(3)算法稳定性:取决于算法本身(4)算法的特殊性:适用前提、排序结果2、直接插入排序3、冒泡排序和快速排序4、堆排序(1)堆的定义:大顶堆和小顶堆(2)堆排序过程:初始建堆+重建堆(3)堆类型选择:降序小顶堆;升序大顶堆(4)堆排序的性能和特点5、归并排序的特点和性能
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1