为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

软件技术数据结构

2012-03-22 50页 ppt 746KB 18阅读

用户头像

is_847203

暂无简介

举报
软件技术数据结构nullVisual Foxpro 等级考试Visual Foxpro 等级考试刘焕君第八讲 软件技术 第八讲 软件技术 第一部分 数据结构与算法 一.算法的基本概念 计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。 1.算法的基本特征:可行性,确定性,有穷性,拥有足够的情报。 2.算法的基本要素:算法中对数据的运算和操作、算法的控制结构。 3.算法设计的基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 4.算法设计的要求:正确性、可读性、健壮性、效率与低存储量需求 二.算法的复杂度 1.算...
软件技术数据结构
nullVisual Foxpro 等级考试Visual Foxpro 等级考试刘焕君第八讲 软件技术 第八讲 软件技术 第一部分 数据结构与算法 一.算法的基本概念 计算机解的过程实际上是在实施某种算法,这种算法称为计算机算法。 1.算法的基本特征:可行性,确定性,有穷性,拥有足够的情报。 2.算法的基本要素:算法中对数据的运算和操作、算法的控制结构。 3.算法的基本:列举法、归纳法、递推、递归、减半递推技术、回溯法。 4.算法设计的要求:正确性、可读性、健壮性、效率与低存储量需求 二.算法的复杂度 1.算法的时间复杂度:指执行算法所需要的计算工作量 2.算法的空间复杂度:执行这个算法所需要的内存空间例题例题(1)下列叙述中正确的是________。 A)一个算法的空间复杂度大,则其时间复杂度也必定大   B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间可复杂度必定小   D)上述三种说法都不对 D例题例题(2)算法复杂度主要包括时间复杂度和 【?】 复杂度。空间例题例题(3)问题处理方案的正确而完整的描述称为 【?】 。 算法例题例题(4)下列叙述中正确的是(B) A)算法的效率只与问题的规模有关,而与数据的存储结构无关 B)算法的时间复杂度是指执行算法所需要的计算工作量 C)数据的逻辑结构与存储结构是一一对应的 D)算法的时间复杂度与空间复杂度一定相关 B第八讲 软件技术 第八讲 软件技术 三.数据结构的定义 1.数据的逻辑结构:反映数据元素之间的关系的数据元素集合的示。数据的逻辑结构包括集合、线形结构、树形结构和图形结构四种。 2.数据的存储结构:数据的逻辑结构在计算机存储空间种的存放形式称为数据的存储结构。常用的存储结构有顺序、链接、索引等存储结构。 四.数据结构的图形表示 在数据结构中,没有前件的结点称为根结点;没有后件的结点成为终端结点。插入和删除是对数据结构的两种基本运算。还有查找、分类、合并、分解、复制和修改等。第八讲 软件技术 第八讲 软件技术 五.线性结构和非线性结构 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构和非线性结构。 线性结构:非空数据结构满足:有且只有一个根结点;每个结点最多有一个前件,最多只有一个后件。 非线性结构:如果一个数据结构不是线性结构,称之为非线性结构。 常见的线性结构:线性表、栈、队列 例题例题(1)下列叙述中正确的是 A)一个逻辑数据结构只能有一种存储结构   B)数据的逻辑结构属于线性结构,存储结构属于非线性结构 C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 C例题例题(2)数据结构分为逻辑结构和存储结构,循环队列属于 【?】 结构。 逻辑例题例题(3)数据的存储结构是指 A) 存储在外存中的数据 B) 数据所占的存储空间量 C) 数据在计算机中的顺序存储方式 D) 数据的逻辑结构在计算机中的表示 D例题例题(4)下列叙述中正确的是 A)程序执行的效率与数据的存储结构密切相关 B)程序执行的效率只取决于程序的控制结构 C)程序执行的效率只取决于所处理的数据量 D)以上三种说法都不对 A例题例题(5)下列叙述中正确的是 A)数据的逻辑结构与存储结构必定是一一对应的 B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构 D)以上三种说法都不对 D第八讲 软件技术 第八讲 软件技术 六.线性表的定义 线性表是n 个元素构成的有限序列(A1,A2,A3……)。表中的每一个数据元素,除了第一个以外,有且只有一个前件。除了最后一个以外有且只有一个后件。即线性表是一个空表,或可以表示为(a1,a2,……an), 其中ai(I=1,2,……n)是属于数据对象的元素,通常也称其为线性表中的一个结点。 非空线性表有如下一些特征: (1)有且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。线性表中结点的个数n称为线性表的长度。当n=0时称为空表。 第八讲 软件技术 第八讲 软件技术 七.线性表的顺序存储结构 线性表的顺序表指的是用一组地址连续的存储单元依次存储线性表的数据元素。 线性表的顺序存储结构具备如下两个基本特征: 1.线性表中的所有元素所占的存储空间是连续的; 2.线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 即线性表逻辑上相邻、物理也相邻,则已知第一个元素首地址和每个元素所占字节数,则可求出任一个元素首地址。 第八讲 软件技术 第八讲 软件技术 假设线性表的每个元素需占用K个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC(ai+1)和第i个数据元素的存储位置LOC(ai)之间满足下列关系: LOC(ai+1)=LOC(ai)+K LOC(ai)=LOC(a1)+(i-1)*K     ① 其中,LOC(a1)是线性表的第一个数据元素a1的存储位置,通常称做线性表的起始位置或基地址。 因为在顺序存储结构中,每个数据元素地址可以通过①计算得到,所以线性表的顺序存储结构是随机存取的存储结构。 在线性表的顺序存储结构下,可以对线性表做以下运算: 插入、删除、查找、排序、分解、合并、复制、逆转第八讲 软件技术 第八讲 软件技术 八.顺序表的插入运算 线性表的插入运算是指在表的第I个位置上,插入一个新结点x,使长度为n的线性表(a1,a2 …ai…an)变成长度为n+1的线性表(a1,a2…x,ai…an). 该算法的时间主要花费在循环的结点后移语句上,执行次数是n-I+1。 当I=n+1,最好情况,时间复杂度o(1) 当I=1, 最坏情况,时间复杂度o(n) 算法的平均时间复杂度为o(n) 第八讲 软件技术 第八讲 软件技术 九.顺序表的删除运算 线性表的删除运算是指在表的第I个位置上,删除一个新结点x,使长度为n的线性表(a1,a2 …ai…an)变成长度为n-1的线性表(a1,a2…ai-1,ai+1…an). 当I=n,时间复杂度o(1),当I=1,时间复杂度o(n) ,平均时间复杂度为o(n) 例题例题(1)在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为________。 A)63   B)64   C)6   D)7B第八讲 软件技术 第八讲 软件技术 十.栈及其基本运算(后进先出) 1.什么是栈? 栈实际上也是一个线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除这一端为栈顶(TOP),另一端为栈底(BOTTOM)。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。 假设栈S=(a1,a2,a3,……an),则a1 称为栈底元素,an称为栈顶元素。栈中元素按a1,a2,a3……an的次序进栈,退栈的第一个元素应该是栈顶元素。即后进先出。 2.栈的顺序存储及其运算 用S(1:M)作为栈的顺序存储空间。M为栈的最大容量。 栈的基本运算有三种:入栈、退栈与读栈顶元素。 入栈运算:在栈顶位置插入一个新元素。 首先将栈顶指针进一(TOP+1),然后将新元素插入到栈顶指针指向的位置。 退栈运算:指取出栈顶元素并赋给一个指定的变量。 首先将栈顶元素赋给一个指定的变量,然后将栈顶指针退一(TOP-1) 读栈顶元素:将栈顶元素赋给一个指定的变量。栈顶指针不会改变。 第八讲 软件技术 第八讲 软件技术 十一.队列及其基本运算 1.什么是队列 队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。  队列的修改是先进先出。往队尾插入一个元素成为入队运算。从对头删除一个元素称为退队运算。 2.循环队列及其运算 在实际应用中,队列的顺序存储结构一般采用循环队列的形式。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。 在循环队列中,,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素。 第八讲 软件技术 第八讲 软件技术 在实际使用循环队列时,为了能区分队满还是队列空,通常需要增加一个标志S: 队列空,则S=0,rear=front=m     队列满,则S=1,rear=front=m 循环队列主要有两种基本运算:入队运算和退队运算 n      入队运算 指在循环队列的队尾加入一个新元素,首先rear=rear+1,当rear=m+1时,置rear=1,然后将新元素插入到队尾指针指向的位置。当S=1,rear=front,说明队列已满,不能进行入队运算,称为“上溢”。 n      退队运算 指在循环队列的排头位置退出一个元素并赋给指定的变量。首先front=front+1,并当front=m+1时,置front=1,然后将排头指针指向的元素赋给指定的变量。当循环队列为空S=0,不能进行退队运算,这种情况成为“下溢”。 例题例题(1)按“先进后出”原则组织数据的数据结构是 【?】 。 栈例题例题(2)按照”后进先出”原则组织数据的数据结构是 A)队列 B)栈 C)双向链表 D)二叉树 B例题例题(3)下列关于栈的描述正确的是 A)在栈中只能插入元素而不能删除元素 B)在栈中只能删除元素而不能插入元素 C)栈是特殊的线性表,只能在一端插入或删除元素 D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素 C例题例题(4)下列关于栈的描述中错误的是 A) 栈是先进后出的线性表 B) 栈只能顺序存储 C) 栈具有记忆作用 D) 对栈的插入与删除操作中,不需要改变栈底指针 B例题例题(5)线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的() 存储结构。 顺序存储例题例题(6)下列对队列的叙述正确的是() A)队列属于非线性表 B)队列按“先进后出”原则组织数据 C)队列在队尾删除数据 D)队列按“先进先出”原则组织数据D第八讲 软件技术 第八讲 软件技术 十二.线性单链表的结构及其基本运算 1.线性单链表的基本概念 一组任意的存储单元存储线性表的数据元素,因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。这两部分信息组成数据元素ai的存储映象,成为结点。它包括两个域:其中存储数据元素信息的域称为数据域,存储直接后继存储位置的域称为指针域。指针域中存储的信息称做指针或链。N个结点链结成一个链表,即为线性表(a1, a2,……,an)的链式存储结构。又由于此链表的每个结点中只包含一个指针域,故又称线性链表或单链表。 有时,我们在单链表的第一个结点之前附设一个结点,称之为头结点,它指向表中第一个结点。头结点的数据域可以不存储任何信息,也可存储如线性表的长度等类的附加信息,头结点的指针域存储指向第一个结点的指针(即第一个元素结点的存储位置)。 在单链表中,取得第I个数据元素必须从头指针出发寻找,因此,单链表是非随机存取的存储结构   链表的形式:单向,双向第八讲 软件技术 第八讲 软件技术 2.线性单链表的存储结构 3. 栈与队列的链式存储 栈也是线性表,也可以采用链式存储结构。 队列也是线性表,也可以采用链式存储结构。 十三.线性链表的基本运算 1.线性链表的插入 2.线性链表的删除 十四.双向链表的结构及其基本运算 在双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前驱。 十五.循环链表的结构及其基本运算 是另一种形式的链式存储结构,它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。因此,从表中任一结点出发均可找到表中其他结点。 例题例题(1)数据结构分为线性结构和非线性结构,带链的队列属于 【?】。 线性结构例题例题(2)下列叙述中正确的是 A)线性链表是线性表的链式存储结构 B)栈与队列是非线性结构 C)双向链表是非线性结构 D)只有根结点的二叉树是线性结构 A例题例题(3)下列对于线性链表的描述中正确的是 A) 存储空间不一定是连续,且各元素的存储顺序是任意的   B) 存储空间不一定是连续,且前件元素一定存储在后件元素的前面 C) 存储空间必须是连续,且前件元素一定存储在后件元素的前面   D) 存储空间必须是连续,且各元素的存储顺序是任意的 A第八讲 软件技术 第八讲 软件技术 十六.树的定义 树是一种简单的非线性结构。树型结构的特点: 1.每个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点。 2.每一个结点可以有多个后件结点,称为该结点的子结点。没有后件的结点称为叶子结点 3.一个结点所拥有的后件个数称为树的结点度 4.树的最大层次称为树的深度。 第八讲 软件技术 第八讲 软件技术 十七.二叉树的定义及其基本性质 1.二叉树是另一种树型结构,它的特点是每个结点至多只有二棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。 2.二叉树的基本性质 ①在二叉树的第I层上至多有2i-1个结点。 ②深度为k的二叉树至多有2k-1个结点(k>=1) ③在任意一个二叉树中,度为0的结点总是比度为2的结点多一个; ④具有n 个结点的二叉树,其深度至少为[log2n]+1。 一棵深度为k且有2k-1个结点的二叉树称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。 第八讲 软件技术 第八讲 软件技术 3.满二叉树与完全二叉树 满二叉树:除最后一层以外,每一层上的所有结点都有两个子结点。在满二叉树的第K层上有2K-1个结点,且深度为M的满二叉树右2M-1个结点 完全二叉树:除最后一层以外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。具有N个结点的完全二叉树的深度为[log2n]+1 完全二叉树总结点数为N, 若N为奇数,则叶子结点数为(N+1)/2 若N为偶数,则叶子结点数为N/2 4.二叉树的存储结构 二叉树通常采用链式存储结构 第八讲 软件技术 第八讲 软件技术 十八.二叉树的遍历 就是遵从某种次序,访问二叉树中的所有结点,使得每个结点仅被访问一次。一般先左后右。 1.前序遍历DLR 首先访问根结点,然后遍历左子树,最后遍历右子树。 2.中序遍历LDR 首先遍历左子树,然后根结点,最后右子树 3.后序遍历LRD 首先遍历左子树,然后遍历右子树,最后访问根结点。 例题例题(1)对下列二叉树 进行中序遍历的结果是________。 A)ACBDFEG  B)ACBDFGE   C)ABDCGEF  D)FCADBEG A例题例题(2)对如下二叉树进行后序遍历的结果为 A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA D例题例题(3)在深度为7的满二叉树中,叶子结点的个数为 A) 32 B) 31 C) 64 D) 63 C例题例题(4)一棵二叉树第六层(根结点为第一层)的结点数最多为 【?】 个。 32例题例题(5)某二叉树中度为2的结点有18个,则该二叉树中有【?】 个叶子结点。 19例题例题(6)一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为   A)219 B)221 C)229 D)231 A例题例题(7)某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为() A)n+1         B)n-1           C)2n         D)n/2A例题例题(8)在深度为7的满二叉树中,度为2的结点个数为_________。63第八讲 软件技术 第八讲 软件技术 十九.顺序查找与二分查找 1.顺序查找 在两种情况下只能用顺序查找:线性表为无序表、链式存储结构的有序表 2.二分查找 只适用于顺序存储的有序表(从小到大)。 对于长度为N的有序线性表,在最坏情况下,二分查找只需要比较log2N次,而顺序查找要比较N次。 排序:指将一个无序序列整理成按值非递减顺序排列的有序序列。 例题例题(1)在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为________。 A)63   B)64   C)6   D)7 B例题例题(2)下列数据结构中,能用二分法进行查找的是 A)顺序存储的有序线性表 B)线性链表 C)二叉链表 D)有序线性链表 A例题例题(3)对于长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为 A) log2n B) n/2 C) n D) n+1 C第八讲 软件技术 第八讲 软件技术 二十.交换类排序法 冒泡排序与快速排序法属于交换类的排序方法 1.冒泡排序法 假设线性表的长度为N,则在最坏的情况下,冒泡排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要的比较次数为N(N-1)/2 2.快速排序法 二十一.选择类排序法 1.简单选择排序法 2.堆排序法 二十二.插入类排序法 1.简单插入排序法2.希尔排序法第八讲 软件技术 第八讲 软件技术 最坏情况下      最好情况下      说明 冒泡排序      n(n-1)/2           最简单的交换排序。 在待排序的元素序列基本有序的 前提下,效率最高 快速排序    n(n-1)/2      O(Nlog2 N)       简单插入排序   n(n-1)/2             每个元素距其最终位置不远时适用 希尔排序      O(n1.5)             简单选择排序    n(n-1)/2             堆排序      O(nlog2n)             适用于较大规模的线性表例题例题(1)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为 【?】 。 45例题例题(2)对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是 A) 冒泡排序为n/2 B) 冒泡排序为n C) 快速排序为n D) 快速排序为n(n-1)/2 D例题例题(2)冒泡排序在最坏情况下的比较次数是 A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2 C
/
本文档为【软件技术数据结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索