信息学奥赛辅导数据结构基础知识_第1页
信息学奥赛辅导数据结构基础知识_第2页
信息学奥赛辅导数据结构基础知识_第3页
信息学奥赛辅导数据结构基础知识_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构基础知识.根据数据元素间关系的基本特征,有四种基本数据结构:集合:数据元素间除“同属于一个集合”外,无其它关系。线性结构:一个对一个,如线性表、栈、队列。树形结构:一个对多个,如树。图状结构:多个对多个,如图。.数据的存储结构一般有两种,用一组物理地址相邻的存储单元来存储数据元素的存储方式称之为顺序存储结构;借助于动态数据结构来存储数据元素的存储方式称之为链式存储结构。.数组的存储一般采用的是顺序存储结构,如一维数组和多维数组。按照顺序往下存储数据。如图1.栈结构的特点是“先进后出”,如图2举例说明。5.队列结构的特点是“先进先出5.队列结构的特点是“先进先出,比如排队买票等,如图3举例说明。Vars:array[1..4,1..10]ofinteger;则说明数组Vars:array[1..4,1..10]ofinteger;则说明数组s是二维的整型数组,每个元素占2字节,假设存储第一个元素的起始地址为100,则它的存储结构如下:栈结构就像一个底部封瞅列结构就像底部不封闭的线线性表,比如进栈元素的生表,比如进队列元素的顺序是序分别为、2、3,则出栈元1、2、3,则出队列元素的顺序素的顺序分别配2、1,满也是1、2、3,满足“先进先出”足“先进后出”原则。的原则。进队列出队列(图3)进队列出队列(图3).树结构:树是n(n>=0)个结点的有限集。任意一棵树,只有一个特定白称为根的结点(如图4中的A);当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为根的子树。结点拥有的子树数称为结点的度。(如图4中的B所拥有的度为2)度为0的结点称为叶子或终端节点。(如图4中的H、I、J、K等都是叶子结点)度不为0的结点称为非终端结点或分支结点。结点的层次从根开始定义起,根为第一层,根的分支为第二层,依此类推(如图4的树结构最大层次为4层)。树中结点的最大层次称为树的深度或高度。(如图4的树结构的深度或高度为4)二叉树是一种特殊的树形结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒,所以二叉树是由根节点、左子树、右子树三个基本单元构成。一棵深度为k的二叉树至多只有2k—1个结点,此二叉树称为满二叉树(如图4为深度为

4的满二叉树),最少也有K个结点(如图5为深度为4的最小二叉树)。可以验证具有n个叶子结点的满二叉树共有2n—1个结点(如图5的满二叉树)。在二叉机^勺第i层上至多有2i1个结点。树的遍历:按照根节点在访问中的先后位置,我们有三种树的遍历方式。(当然每次访问都是左子树在右子树的前面。)TOC\o"1-5"\h\z先序遍历(先访问根节点,再访问左子树,最后访问右子树):如图4的先序遍历为:A、B、D、H、I、E、J、K、C、F、L、M、G、N、O。中序遍历(先访问左子树,再访问根节点,最后访问右子树):如图4的中序遍历为:H、D、I、B、J、E、K、A、L、F、M、C、N、G、O。后序遍历(先访问左子树,再访问右子树,最后访问根节点):如图4的后序遍历为:H、I、D、J、K、E、B、L、M、F、N、O、G、C、A。由上面三种遍历树结构的方式可知,先序遍历最先访问的是根节点;后序遍历最后访问的是根节点;由中序遍历的根节点的位置可知,在根节点的左边全部都是根节点的左子树,在根节点的右边全部都是根节点的右子树。必须掌握,由任意两种树的遍历结果,能够画出该二叉树,然后根据该二叉树,写出另一种遍历结果。(10)哈夫曼树称为最优树,是一类带权路径长度最短的树。.图结构:图是由顶点集V和边集E组成,一般把图在图6中,边有方向性,我们称之为有向图,有向图的边称之为弧。在图7中,边没有方向性,即边<v1,v2>和<v2,v1>指的是同一条边,我们称之为无向图。在有向图中,从某顶点出发的弧的数目称为该顶点的出度,到达某顶点的有向弧的数目称为该顶点的入度。(如图6的有向图中,顶点V1的出度为2,入度为1。)在无向图中,与顶点依附的边的条数称为该顶点的度。(如图7中,顶点V1的度为2。)完全图定义:如果用n表示图中顶点数目,用e表示边或者弧的数目,则有:对于有向图,具有n(n-1)条弧的有向图称为有向完全图(任意两个顶点之间都有2条有向弧)对于无向图,具有n(n-1)/2条边的无向图称为完全图(任意两个顶点之间都有一条边。)连通图定义:在无向图中,若图中任意两个顶点之间都存在路径,则称该无向图为连通图。在有向图中,对于任意两个顶点Vi和Vj(ViwVj),若从Vi到Vj和从Vj到Vi之间均存在路径,则称该有向图为强连通图。带权图定义:有时图的边往往与具有一定意义的数值有关,我们把这种与图的边相关的数称为边上的权。权可以表示从一个顶点到另一个顶点的距离、费用或代价等,由这种带权的边构成的图称为带权图。图的遍历方式有两种:深度优先搜索和广度优先搜索。

(图6有向图)(图6有向图).二分法查找:具体方法见课本P147〜P148面。二分法查找(又称折半查找)算法如下:首先需要设三个指示器top、bot、mid,分别指向查找范围的顶部、底部和中间位置。假定有11个元素的有序数列(2,5,7,10,14,15,18,23,35,41,52),待查找数为41,则一开始top=1、bot=11、mid=(top+bot)div2=6,这是一定要bot大于top,接着进行判断:如果x=a[mid],则表示找到;如果x<a[mid],则说明待查找数在top至1Jmid—1之间,改变bot=mid—1;如果x>a[mid],则说明待查找数在mid+1到bot之间,改变top=mid+1;重复以上过程直到已经找到或无法查找为止。例如查找41,则只需查找3次即可找到。假设用二分法在有1000个数据的有序数组中查找某个数据,则最多只需查找10次即可。(因为210>1000).排序:在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是选择排序。在待排序的数据表已经为有序时,快速排序算法花费时间反而多。.设循环队列中数组的下标范围是1〜n,其头尾指针分别为f和r,则其元素个数为(r-f+n)MODn。.哈希表:.相关练习习题:数组A[30..100,20..100]以行优先的方式存储,每个元素占8个字节,且已知A[40,30]的地址为2000,则A[60,90]的地址为:如果以列优先存储,则为:设栈S的初始状态为空,现有6个元素组成的序列{1,3,5,7,9,11},对该序列在S栈上依次进行如下操作(从序列中的1开始,出栈后不在进栈):进栈,出栈,进栈,进栈,进栈,进栈,出栈,进栈,问出栈的元素序列是:,栈顶指针的值为栈顶元素为:把中缀表达式写成后缀及前缀表达式(P+Q)*(A-B)/((C+D)/(E-F))-G后:A-C*D+B/E*(D/A)后:根据后缀表达式,写出前缀及中缀表达式ABC/DE+GH-/*+刖:中:ABC/DE+GH-/*+刖:中:备注:以上这两题实际上考查了数据结构中的表达式树给出一棵二叉树的中序遍历:DBGEACHF与后序遍历:DGEBHIFCA,画出此二叉树A=11001010B,B=00001111B,C=01011100B,则AVBAC=()BA)01011110B)00001111C)01011100D)11001110E)11001010对给定的整数序列(54,73,21,35,67,78,63,24,89)进行从小到大的排序时,采用快速排序的第一趟扫描的结果是

A)(24,21,35,54,67,78,63,73,89)B)(24,35,21,54,67,78,63,73,89)0)(24,21,35,54,67,63,73,78,89)D)(21,24,35,54,63,67,73,78,89)一棵n个结点的完全二叉树,则二叉树的高度h为A)n/2O)(log2n)/20)[log2n]+1D)2n-1设有一个含有13个元素的Hash表(0~12),Hash函数是:H(key)=key%13,其中%是求余数运算。用二次探查法解决冲突,则对于序列(8、31、20、33、18、53、27),则下列说法正确的是()。A)27在1号格子中B)33在6号格子中0)31在5号格子中D)20在7号格子中E)18在4号格子中.历届信息学奥赛试题中的数据结构试题:选择题中的数据结构试题:(第10届)某车站呈狭长形,宽度只能容下一台车,并且只有一个出入口。已知某时该车站站台为空,从这一时刻开始出入记录为:“进出进进出进进进出出进出”。假设车辆入站的顺序为1,2,3……,则车辆出站的顺序为(E)A、1,2,3,4,5B、1,2,4,5,7C、1,3,5,4,6D、1,3,5,6,7E、1,3,6,5,7(第10届)二叉树T,已知其前序遍历序列为1243576,中序遍历序列为4215736,其后序遍历序列为(B)A、4257631B、4275631C、4275361D、4723561E、4526371(第10届)满二叉树的叶节点为N,则它的节点总数为(0)A、A、NB、2NC、2N-1D、2N+1E、2AN-1(4)(4)(第10届)在下图,从端点(E)出发存在一条路径可以遍历图中的每条边一次,而且(第9届)一个高度为h的二叉树最小元素数目是(B)。A)2h+lB)h0)2h-1D)2hE)2h-lTOC\o"1-5"\h\z(第9届)已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素是13,则第五个出队列的元素是(B)。A)5B)410)77D)13E)18(第8届)一个向量第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地址是(B)A)110B)1080)100D)109(第8届)在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是(D)。A)希尔排序B)起泡排序0)插入排序D)选择排序

(9)(第7届)在顺序表(2,5,7,10,14,15,18,23,35,41,52)中,用二分法查找12,所需的关键码比较的次数为(C),用二分法查找41,所需的关键码比较此数为(B)。A)2B)3A)2B)3C)4(10)(第7届)若已知一个栈的入栈顺序是Pn,若P1是n,则Pi是(C)A)iB)n-1C)n-i+1(11)(第6届)设循环队列中数组的下标范围是数为(D)A.r-fB.r-f+1C.(r-f)MOD(12)(第6届)在待排序的数据表已经为有序时,1,2,3,…,n,其输出序列为P1,P2,P3,…,D)不确定1〜n,其头尾指针分别为f和r,则其元素个n+1D.(r-f+n)MODn下列排序算法中花费时间反而多的是(D)A.堆排序B.C.冒泡排序D.快速排序(13)(第6届)某数列有1000个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索(binarysearch),在最坏的情况下,需检视(B)个单元A.1000B.10C.100D.500(14)(第6届)已知数组A中,每个元素A[I,J]在存贮日^要占3个字节,设I从1变化到8,J从1变化到10,分配内存时是从地址SA开始连续按行存贮分配的。试问:A[5,8]的起始地址为(A)A.SA+141B.SA+180C.SA+222D.SA+225(15)(第6届)线性表若采用链表存贮结构,要求内存中可用存贮单元地址(D)A.必须连续B.部分地址必须连续C.一定不连续D.连续不连续均可(16)(第6届)下列叙述中,正确的是(D)A.线性表的线性存贮结构优于链表存贮结构B.队列的操作方式是先进后出C.栈的操作方式是先进先出D.二维数组是指它的每个数据元素为一个线性表的线性表问题求解中的数据结构知识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论