预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共15页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构=个体的存储+个体关系的存储; 核心研究的是个体关系的存储 算法=对存储数据的操作; 算法的衡量标准:时间复杂度(程序大概执行的次数,不是时 间);空间复杂度;程序的健壮性;程序的难易程度; 数据结构: 一,线性结构【把所有的节点用一根直线穿起来】 连续存储【数组】 优点:存取速度快; 缺点:插入删除元素很慢;事先必须知道数组的长度;需要大 块的内存块 离散存储【链表】 优点:空间没有限制;插入删除元素很快; 缺点:存取的速度很慢; 定义: n个节点连续分配; 彼此通过指针相连; 每个节点只有一个前驱节点,每个节点只有一个 后续节点; 首节点没有前驱节点为节点没有后续节点; 术语: 首节点:第一个有效的节点 尾节点:最后一个有效的节点 头结点: 头结点的数据类型和首结点的数据类型 一样 第一个有效节点之前的那个节点;头结 点并不存放有效数据; 加头结点主要是为了方便对链表的操作 头指针:指向头结点的指针变量 尾指针:指向尾结点的指针变量 如果希望通过一个函数来对链表进行处理,我们至 少需要接收链表的哪些参数只需要一个参数:头指针; 因为我们通过头指针可以推算出链表的其他参数; 分类: 单链表 双联表:每一个节点有两个指针域 循环链表:能通过任何一个节点找到其他 所有节点 非循环链表 算法: 狭义的算法:是与数据的存储方式密切相 关; 广义的算法:是与数据的存储方式无关; 泛型:利用某种技术达到的效 果就是:不同的存储方式,执行的操作是一样的;(c++中的模 板) 同一种逻辑结构,无论 该逻辑结构物理存储是什么样子的 我们可以对它执行相同 的操作 遍历 查找 清空 销毁 求长度 排序 删除结点 插入节点 线性结构的两种常见应用之一【栈】 定义: 一种可以实现“先进后出的存储结构” 栈类似于箱子; 分类: 静态栈: 动态栈: 算法: 出栈 压栈 静态分配变量内存在栈里面分配,动态内存分配在堆里面 分配; 应用 函数调用 中断 表达式求值 内存分配 缓冲处理 迷宫 线性结构的两种常见应用之二【队列】 定义:一种可以实现“先进先出”的存储结构 分类:链式队列--用链表实现;静态队列--用数组实现 静态队列: 静态队列通常都必须是循环队列 讲解: 1.静态队列为什么必须是循环队列 2.循环队列需要几个参数来确定 需要两个参数确定font和rear 3.循环队列参数的含义 两个参数不同场合有不同的含义 1)队列初始化 font和rear的值都是零 2)队列非空 font代表的是队列的的第一个 元素 rear代表的是队列的最后一个 元素的下一个元素 3)队列空 front和rear的值相等但不一 定是零 4.循环队列入队伪算法 两步完成: 1.将值存入rear所代表的位置 2.错误写法:rear=rear+1 正确写法:rear=(rear+1)%数组 长度 5.循环队列出队伪算法 两步完成: 1.将font所代表的位置的值保存 2.错误写法:font=font+1 正确写法:font=(font+1)%数组 长度 6.如何判断循环队列是否为空 如果font和rear的值相等则该队列 一定为空 7.如何判断循环队列是否已满 font的值和rear的值之间无大小关 系 两种方式: 1.多增加一个参数队列的长度 2.少用一个元素(当队列长度为 数组长度-1时队列已满) 如果f和r相邻是队列已满; if((r+1)%数组长度==f) 队列已满 else 队列不满 算法: 入队;出队; 队列的应用: 所有和时间有关的操作; 递归 定义:一个函数自己直接或间接调用自己 像这种明确执行次数的问题都用递归来解决 递归要满足的三个条件: 1.递归必须得有一个明确的终止条件 2.该函数所处理的数据规模必须在递减 3.这个转化必须是可解的 循环和递归: 递归:易于理解;速度慢;存储空间大; 循环:不易理解;速度快;存储空间小; 举例 1.求阶乘 2.1+2+3+4...+100的和 3.汉诺塔 4.走迷宫 函数调用的过程: 递归的应用: 树和森林就是以递归的方式定义的 树和图的很多算法都是以递归来实现的 很多数学公式就是以递归的方式定义的 二,非线性结构 树 定义:1)(树的递归定义)有且只有一个成为根的节点, 有若干个互不相交的子树,这些子树本身也是一棵树; 2)树是由结点和边组成的,每个节点只有一个父节 点但可以有多个子节点,但有一个节点例外 该节点没有父节点,此节点成为根节