ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:65.11KB ,
资源ID:7371391      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7371391.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构习题集.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数据结构习题集.docx

1、数据结构习题集第一章知识点:1.基本概念: 数据结构分类、特点等:如线性结构,是数据元素之间存在一种( 一对一关系)数据元素的概念(数据项)2.时空复杂度1. 设有数据结构(D,R),其中D=d1,d2,d3,d4,d5,d6,R=r ,r=(d1,d2),(d2,d3),(d3,d4),(d2,d5),(d3,d5)试按照图论中的画法画出其逻辑结构图。2. 计算下面程序段的时间复杂度。 x=0;for(i=1; in; i+) for (j=1; j=n-i; j+)x+;3. 分析下面各程序段的时间复杂度 1)for (i=0; in; i+)for (j=0; jm; j+)Aij=0;

2、 2) i=1; while(inext=q B. p-next=q-nextC. p=q-next D. p-next=q-next-next2、在一个头指针为head的带头结点单链表中,要向表头插入一个由指针p指向的结点,则应执行 、 。 在双链表中,在指针P所指结点前面插入一个结点S时的语句序列是:S-next=P;S-prior=P-prior;P-prior=S;_ S-prior-next=S _;3. 在双向链表指针p的结点前插入一个指针q的结点操作是( )。A. p-Prior=q;q-Next=p;p-Prior-Next=q;q-Prior=p-Prior;B. p-Pri

3、or=q;p-Prior-Next=q;q-Next=p;q-Prior=p-Prior;C. q-Next=p;q-Prior=p-Prior;p-Prior-Next=q;p-Prior=q;D. q-Prior=p-Prior;q-Next=p;p-Prior=q;p-Prior-Next=q;4. 已知p结点是某双向链表的中间结点,要删除p结点的直接后继结点的语句序列是:A. p-next-next-prior=p; p-next= p-next-next; q=p-next; free(q);B. q=p-next; p-next= p-next-next; p-next-next-

4、prior=p; free(q);C. q=p-next; p-next-prior=p; p-next= p-next-next; free(q);D. q=p-next; p-next= p-next-next; p-next -prior=p; free(q);5.设r指向单链表的最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的三条语句是_ _;r=s; r-next=null;。7 对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为 ,在给定值为x的结点后插入一个新结点的时间复杂度为 _。8. 在顺序表中访问任意一结点的时间复杂度均为 ,因此顺序表

5、也称为 的数据结构。9、线性链表不具有的特点是( )。A随机访问 B不必事先估计所需存储空间大小C插入与删除时不必移动元素 D所需空间与线性表长度成正比10.若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用( )存储方式最节省时间。 A.单链表 B.双链表 C.带头结点的双循环链表 D.单循环链表11.带头结点的双循环链表L为空表的条件是_。12. 不带头结点的单链表head为空的判定条件是 。 15.对于长度为n的顺序表执行删除操作,则其结点的移动次数()A.最少为0,最多为n B.最少为1,最多为nC.最少为0,最多为n-1 D.最少为1,最多为n-116.线

6、性表的长度是线性表所占用的存储空间的大小。( 对还是错)17.双循环链表中,任意一结点的后继指针均指向其逻辑后继。(对还是错)18、线性表在 情况下适用于使用链式结构实现。、需经常修改中的结点值 、需不断对进行删除插入 、中含有大量的结点 、中结点结构复杂19若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋元素,则采用( )存储方式最节省时间。单链表 双链表 单向循环 顺序表1. 假设线性表 L=(a1,a2,an) 用带头结点的单链表存储表示,试编写算法对其实现就地逆置,即利用原链表中每一个结点存储空间,使得元素的逻辑次序改变为(an, a2,a1)。2试编写算法,以统计带头结点

7、单链表的元素个数。3. 设某单链表的结点结构为data |next,试编写算法判断该链表的元素是否是递增的。4. 已知单链表L是一个递增有序表,试写一高效算法,删除表中值大于min且小于max的结点(若表中有这样的结点),同时释放被删结点的空间,这里min和max是两个给定的参数。请分析你的算法的时间复杂度。第3章 栈和队列知识点:栈、循环队列 考点:出入栈操作、栈和队列特点、循环队列操作(元素个数、队头队尾指针)、应用 1一个栈的入栈序列是1、2、3、4,若第二个出栈的元素是4,则最后出栈的元素可能是。2.一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( ) A.

8、 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 23.在对链队列作出队操作时,不会改变front指针的值。( 对还是错 )4.若一个栈的输入序列为123n,其输出序列的第一个元素为n,则其输出序列的每个元素ai一定满足ai=n-i+1(i=1,2.,n)( 对还是错 )5. 栈是一种特殊的线性表,允许插入和删除运算的一端称为 , 不允许插入和删除运算的一端称为 。6、如果入栈序列是1,3,5,97,99,且出栈序列的第一个元素为99,则出栈序列中第30个元素为_ _。 7有5 个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元

9、素C,D最先出栈(即C第一个且D第二个出栈)的次序有哪几个?8、向顺序栈中压入新元素时,应当( )。 A先移动栈顶指针,再存入元素 B先存入元素,再移动栈顶指针C先后次序无关紧要 D同时进行9.设一个链栈的栈顶指针是ls,栈中结点格式为info | link ,栈空的条件是_.如果栈不为空,则退栈操作为p=ls;_ _;free(p);。10.如果以链表作为栈的存储结构,则退栈操作时( )1 必须判别栈是否满 2 对栈不作任何判别3 必须判别栈是否空 4 判别栈元素的类型11. 判定一个栈ST(最多元素为m0)为空的条件是ST-top0 ST-top=0 ST-topm0 ST-top=m01

10、3. 判定一个队列QU(最多元素为m0)为满队列的条件是AQU-rear QU-front = = m0 BQU-rear QU-front 1= = m0 CQU-front = = QU-rear DQU-front = = QU-rear+114. 设循环队列的容量为40 (序号从0到39),现经过一系列的入队和出队运算后,有 front=11,rear=19; front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?15、假设为循环队列分配的向量空间为Q20,若队列的长度和队头指针值分别为13和17,则当前尾指针的值为_。 16.设数组Data0.m作为循环队列S

11、Q的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )front=front+1 front=(front+1)% mrear=(rear+1)%m front=(front+1)%(m+1) 12. 在按层次遍历二叉树的算法中,需要借助的辅助数据结构是()A队列 B栈C线性表 D有序表13. 用邻接表表示图进行深度优先遍历时,通常是采用 来实现算法的。A 树 B. 队列 C. 栈 D. 图 17. 简述以下算法的功能(栈和队列的元素类型均为int)。void algo3(Queue &Q)Stack S; int d;InitStack(S);while(!Qu

12、eueEmpty(Q) DeQueue (Q,d); Push(S,d);while(!StackEmpty(S) Pop(S,d); EnQueue (Q,d); 第4章 数组知识点:二维数组的存储、特殊矩阵1. 假设有二维数组A68,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为 ;末尾元素A57的第一个字节地址为 ;若按行存储时,元素A14的第一个字节地址为 ;若按列存储时,元素A47的第一个字节地址为 。2. 假设有60行70列的二维数组a160, 170以列序为主序顺序存储,其基地址为1000,每个元素占2个存储单

13、元,那么第32行第58列的元素a32,58的存储地址为( )。(无第0行第0列元素) ()4454 ()6904 ()7902 ()答案A, B, C均不对3数组A的每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A,的地址为( ) A. 1140 B. 1145 C. 1120 D. 11254.二维数组A1520采用按行为主序的存储方式,每个元素占4个存储单元,若A00的存储地址为300,则A1010的地址为()A.700 B.1120C.1180 D.11407. 下列各三元组表分别表示一个稀疏矩阵,试写出它们的稀疏矩阵。 ijv7661472183

14、594276537318、设有一个10阶的对称矩阵A1010,采用压缩存储方式按行将矩阵中下三角部分的元素存入一维数组B 中,A00存入B0中,则A85在B 中( )位置。A32 B33 C41 D65 9、假设有100行200列的二维数组a100200以列序为主序顺序存储,其基地址为10000,每个元素占2个存储单元,那么第45行第67列的元素a4466的存储地址为 。11. 设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数组B中(注:B下标从0开始),求矩阵中任一元素ai,j(ij)和一维数组B中下标k的对应关系。第5章 二叉树知识点: 树、二叉树(完全

15、二叉树)、森林基本概念(度、),存储结构,遍历1、设F是一个森林,B是由F转换得到的二叉树,F中有n个非叶结点,则B中右指针域为空的结点有( )个。An-1 Bn Cn+1 Dn+22 已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树中有_ 个叶子的结点。5、若一棵二叉树中度为2的结点数是10,则叶子结点数为 个。6.深度为6(根的层次为1)的二叉树至多有( )结点。1 64 32 31 637.将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为1。编号为49的结点X的双亲编号为( )24 25 23 无法确定8.设一棵完全

16、二叉树具有1000个结点,则此完全二叉树有 个叶子结点;有 个度为2的结点,有 个度为1的结点。9. 一棵具有个结点的完全二叉树,它的深度为 。10、已知完全二叉树的第8层有8个结点,则其叶子结点数是68。11. 在完全的二叉树中,若一个结点没有 ,则它必定是叶结点。A. 左子结点 B. 右子结点 C. 左子结点或者没有右子结点 D. 兄弟12.某二叉树的先序序列和后序序列正好相同,则该二叉树一定是( )的二叉树。 A.空或只有一个结点 B.高度等于其结点数 C.任一结点无左孩子 D.任一结点无右孩子13.在有n个结点的二叉链表中,值为非空的链域的个数为( ) A. n-1 B. 2n-1 C

17、. n+1 D. 2n+114.一棵左右子树均不空的二叉树在先序线索化后,其空指针域数为( ) A. 0 B. 1 C. 2 D.不确定15.DFS算法的时间复杂度为( ) A. O(n) B. O(n3) C. O(n2) D. O(n+e)16、有n个叶子结点的哈夫曼(Huffman)树所具有的结点数为 22. 给定二叉树的两种遍历序列,分别是:中序遍历序列:DCBGEAHFIJK;后序遍历序列:DCEGBFHKJIA。(1) 请画出该树。23. 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为abcdefgh0.070.190.020.060.320.030.210.10

18、要求:(1) 为这8个字母设计哈夫曼编码,并画出哈夫曼树。(2) 求该哈夫曼树的带权路径长度。26.已知一树的双亲表示法如下,其中各兄弟结点是依次出现的,画出该树及对应的二叉树。123456789101112131415dataABCDEFGHIJKLMNOparent011122334456678第6章 图知识点:基本概念(度、完全图、连通子图、生成树、最小生成树),图的存储(邻接矩阵、邻接表),图的遍历,最小生成树,拓扑排序,最短路径,关键路径2.有向图用邻接矩阵表示后,顶点i的入度等于邻接矩阵中第i列的非零元个数。(对还是错 )3.有向图的邻接表和逆邻接表中的结点数一定相同。( 对还是错

19、 )5. 在一个图中,所有顶点的度数之和等于图的边数的 倍。 A1/2 B. 1 C. 2 D. 4 6. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的 倍。 A1/2 B. 1 C. 2 D. 4 7. 已知图的邻接表如下图1所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是A0 1 3 2 B. 0 2 3 1 C. 0 3 2 1 D. 0 1 2 38有n个顶点的强连通有向图G至少有 条弧。 17. 用邻接表表示图进行深度优先遍历时,通常是采用 来实现算法的。A 树 B. 队列 C. 栈 D. 图 2. 已知图的邻接矩阵,根据算法,分别求从顶点0出发按深度和广度优先

20、遍历的结点序列。5. 已知某有向图的邻接矩阵如右图所示,要求:(1) 确定图中每个顶点的入/出度;(2) 画出该图;(3) 画出该图的邻接表(4) 画出该图的逆邻接表。第7章 查找知识点:折半查找过程,堆概念,二叉排序树,哈希查找1.对有18个元素的有序表作二分查找,则查找A3的比较序列的下标依次为( ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,32、对表长为900的索引顺序表进行分块查找,假设每一块的长度均为15,且以顺序查找确定块,则在各记录的查找概率均相等的情况下,其查找成功的平均查找长度为_。 3. 在表长为的链表中进行线性查找,它的平均查找长度为

21、。 7、)假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找。(1) 画出描述折半查找过程的判定树;(2) 若查找元素54,需依次与哪些元素比较?(3) 若查找元素90,需依次与哪些元素比较?(4) 假定每个元素的查找概率相等,求查找成功时的平均查找长度。8、设哈希(Hash)表的地址范围为015,哈希函数为:H(Key)Key mod 13。Key为关键字,用线性探测法再散列法处理冲突,输入关键字序列: (10,24,32,17,31,30,46,48,41,65,49)造出Hash表,试回答下列问题:(1) 画出哈希表的示意图;(2) 若查找关键字

22、30,需要依次与哪些关键字进行比较?12.下面是将键值为x 的结点插入到二叉排序树中的算法,请在划线处填上适当的内容。typedef struct pnode int key; struct pnode *left, *right; pnode;void searchinsert(int x, pnode t ) /*t为二叉排序树根结点的指针*if ( )p=malloc(size);p-key=x;p-lchild=null; p-rchild=null;t=p; else if (xkey) searchinsert(x,t-lchild) else_;13设n个元素的有序表为,为一个给

23、定的值,二分查找算法如下: int binsearch(sqlist R, keytype K) j=1;h=n ;suc=0; while(j=h)&(!suc) mid =(j+h)/2; switch case K=Rmid.key: suc=1; break; case KRmid.key: j=mid+1 if (suc) return(mid); else return(0); 将上述算法中划线语句改为:KRmid.key: h=mid.(1)改动后,算法能否正常工作?请说明原因。(2)若算法不能正常工作,给出一个查找序列和一个出错情况的查找键值;若能正常工作,请给出一个查找序列和

24、查找某个键值的比较次数。14. 从空树起,依次插入关键字37,50,42,18,12,56,30,23,构造一棵二叉排序树。(1) 画出该二叉排序树。(2) 画出从(1)所得树中删除关键字为37的结点之后的二叉排序树。第九章 排序知识点:排序算法的稳定性,各类排序算法执行过程、复杂性分析,3.设表中元素的初始状态是按键值递增的,分别用堆排序、快速排序、冒泡排序和归并排序方法对其进行(按递增排序),冒泡排序最省时间,快速排序最费时间。5、堆是一种 排序。. 插入 .选择 . 交换 . 归并6、若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用快速排序的方法,以第一个记录

25、为基准得到的一次划分结果为. 38, 40, 46, 56, 79, 84 . 40, 38, 46 , 79, 56, 84. 40, 38,46, 56, 79, 84 . 40, 38, 46, 84, 56, 798. 在插入和选择排序中,若初始数据基本正序,则选用 ; 若初始数据基本反序, 则选用 。 10. 冒泡排序在最好情况下时间复杂度为 。11. 下列排序方法中,哪一种方法的比较次数与纪录的初始排列状态无关?A. 直接插入排序 B. 起泡排序 C. 快速排序 D. 直接选择排序13从未排序序列中挑选元素,并将其依次插入已排序序列的一端的方法,称为 (). 希尔排序 (). 归并排序 . 插入排序 . 选择排序17有一组键值25,84,21,47,15,27,68,35,24,采用快速排序方法由小到大进行排序,请写出每趟的结果,并标明在第一趟排序过程中键值的移动情况。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2