数据结构习题集和答案.doc
《数据结构习题集和答案.doc》由会员分享,可在线阅读,更多相关《数据结构习题集和答案.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 绪论1、填空题1.常见的数据结构有集合,_线性_结构,_树形_结构,_图形_结构等四种。2.常见的存储结构有_顺序存储_结构,_链式存储_结构等两种。3.数据的基本单位是_数据元素_,它在计算机中是作为一个整体来处理的。4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,_线性结构_和_非线性结构_。2、选择题1. 算法的计算量的大小称为计算的( B )。A效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于(C )A问题的规模 B. 待处理数据的初态 C. A和B D. 以上都不对3.计算机算法指的是(1)(c),它必须具备(2)(B) 这三个特性。
2、(1) A计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 4. 下面关于算法说法错误的是( D )A算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的3、应用题1、给出以下算法的时间复杂度.void fun(int n)int i=1,k=100;while(in)k=k+1;i=i+2; 时间复杂度为_O(n)_。2、给出以下算法的时间复杂度.void
3、 fun2(int n)int i=1,k=100;while(inext=p-next_;_p-next=s_;4.在单向链表中,若要删除某个结点p,一般要找到_p的前趋_结点,才能实现该操作。2、选择题1. 将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是 A 。(A)n (B)2n1(C)2n (D)n-12. 在单链表中,如果在结点p之后插入一个新结点s,其操作为 A 。(A)s-next=p-next; p-next=s;(B)p-next=s; s-next=p-next;(C)s-next=p; p-next=s-next;(D)p-next=s; s-next=p
4、;3.若长度为n的线性表采用顺序存储结构,在其第i个位置删除一个元素的算法的平均时间复杂度为(C )。(1in)AO(0) BO(1) C.O(n) DO(n2)4. 若长度为n的线性表采用顺序存储结构,在其第i个位置前插入一个新元素需要移动的元素个数为(B )。(1in+1)An-i Bn-i+1 C. i Dn-i-13、判断题1.线性表中每一个元素都有一个前驱和一个后继。( )2. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。( )3. 顺序存储方式的优点是存储密度大,插入、删除运算效率高。( )4、程序设计题1、单链表的结点结构定义如下:struct LinkNodeLink
5、Node *next;int data;请根据述函数的功能写程序。void Insert(LinkNode *h,LinkNode *s)/h指向链表的头结点(即使链表中没有元素,头结点也存在。)/链表中元素已经递增有序/函数功能为将结点s插入到链表h中。插入后链表仍然保持递增的顺序LinkNode *p,*q;/q指向p的前驱q=h;p=h-next; while(p)if(p-datas-data) /寻找到插入点位置,插入sq-next=s; s-next=p; return;elseq=p; (1分)p=p-next; (1分)/当表中没有比s大的结点时,插入到表尾s-next=q-n
6、ext; (2分)q-next=s; (2分)第3章 栈和队列1、填空题1.栈和队列在本质上都是_线性表_。2.栈的操作特点是_后进先出_。队列的操作特点是_先进先出_。2、选择题1.消除递归不一定需要使用栈,此说法_A_。 A. 正确 B. 错误2.用单循环链表表示队列,正确的说法是 B 。 (A)可设一个头指针使入队、出队都方便;(B)可设一个尾指针使入队、出队都方便;(C)必须设头尾指针才能使入队、出队都方便;(D)无论如何,只可能使入队方便。3、判断题1.栈的特点是先进先出。( )2.可以在队列的任意位置插入元素。( )3.如果进栈的序列为(1,2,3,4),则(4,2,3,1)不可能
7、是出栈序列。() 4.在用顺序表表示的循环队列中,可用标志位来区分队空或队满的条件。() 第4章 串1、选择题1. 设有两个串p和q,求q在p中首次出现的位置的运算称作( B )A连接 B模式匹配 C求子串 D求串长2、判断题1.空串和空格串是同一个概念,二者没有区别。( )第5章 数组和广义表1、填空题1.二维数组在内存中存储可以有两种存储方式,一种是_行_优先存储,一种是 列 优先存储。2.设广义表L((),(),())。则head(L)是() ;tail(L)是((),()) ;L的长度是3 ;L的深度是 3 。3.设广义表L((a),(b),(c)) 则head(L)是_(a)_;ta
8、il(L)是_((b),(c))_。2、选择题1.在C语言中,如果有数组定义 int A89;假定每个整型数据占2字节,则数组元素A44的地址是( A )。A. A+80 B. A+76 C.A+82 D.以上都不对2.广义表A=(a,b,(c,d),(e,(f,g)),则下面式子的值为(D ); Head(Tail(Head(Tail(Tail(A)A(g) B.(d) C.c D.d3、判断题1.在C语言中,多维数组的存储采取的是行优先的方式。( )2.广义表在本质上也是线性表。( )3.可以用三元组存储法来压缩存储稀疏矩阵。( )4.已知广义表A=(a,b,c),(d,e,f),从A中取
9、出原子e的运算是head(tail(head(tail(A)。 ( )第6章 树和二叉树1、填空题1.一棵62个叶结点的完全二叉树,最多有_(1+2+32)+(62-1)=124_个结点。2.若规定仅有根的二叉树的高度为1,那么高为h的完全二叉树最多有_2h-1_个结点,最少有_2(h-1)_个结点。3.设只包含有根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为_2(k+1)-1_,最小结点数为_k+1_。4.设仅包含根结点的二叉树的高度为1,则高度为k的二叉树的最大结点数为_2k-1_,最小结点数为_k_。2、选择题1.具有N个结点的完全二叉树的深度是_B_。(A) log2N (
10、B) log2N +1 (C) log2(2N) (D) log2N -12.设二叉树的树根为第一层,则第i层上至多有_C_结点。(A)1 (B)2 (C)2i-1 (D)2i-13、判断题1.二叉树的左右子树次序是严格的,不能够任意改变。( )2.若根为第一层,则深度为k的满二叉树的结点为2k-1 。 ( )3.二叉树的三叉链表存储结构可以方便的访问到双亲结点。 ( )4、应用题1.在一段文字中,共出现a、b、c、d、e、f六种字符,每种字符出现的频率分别为7,9,12,22,23,27。请回答下列问题:(1)什么是哈夫曼树?(3分)(2)根据题目所给频率值,画出相应的哈夫曼树。(11分)(
11、3)给出各个字符对应的哈夫曼编码。(6分)(4)该段文字经过哈夫曼编码后,长度是多少。(4分)参考答案如下:(1)答案为:带权路径长度最小的二叉树称为哈夫曼树。(3分)(2)根据题目所给频率值,画出相应的哈夫曼树。(11分,每个结点1分)fc287912222355162745100abed1000001111(3)给出各个字符对应的哈夫曼编码。(6分)a:1110 b:1111 c:110 d:00 e:01 f:10(4)该段文字经过哈夫曼编码后,长度是多少。(4分)(7+9)*4+12*3+(22+23+27)*2=244或者100+45+55+28+16=2442. 设一棵二叉树的先序
12、遍历序列为abcde,中序遍历序列为badce,请画出对应的二叉树,并写出对应后序遍历序列。(15分)参考答案如下:(1)画出二叉树(10分)错一个结点扣2分。 abcde(2)后序遍历序列为:bdeca (5分)3. 通信报文中出现的字符A、B、C、D、E,在报文中出现的频率分别为0.23、0.2、0.32、0.12、0.13,分别给出相应字符的哈夫曼编码(要求画出哈夫曼树,并且把权值小的结点放在左边)。(共14分)参考答案如下:为处理方便,关键字都乘以100,为23,20,32,12,13构造哈夫曼树为:(9分,每个结点1分)ABDEC010001111004357202325321213
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题集 答案
限制150内