数据结构与算法分析习题与参考答案.docx
- 文档编号:25445487
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:76
- 大小:678.32KB
数据结构与算法分析习题与参考答案.docx
《数据结构与算法分析习题与参考答案.docx》由会员分享,可在线阅读,更多相关《数据结构与算法分析习题与参考答案.docx(76页珍藏版)》请在冰豆网上搜索。
数据结构与算法分析习题与参考答案
大学
《数据结构与算法分析》课程
习题及参考答案
模拟试卷一
一、单选题(每题2分,共20分)
1.以下数据结构中哪一个是线性结构?
()
A.有向图B.队列C.线索二叉树D.B树
2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,
则执行如下()语句序列。
A.p=q;p_>next=q;B.p_>next=q;q_>next=p;
C.p_>next=q_>next;p=q;D.q_>next=p->next;p_>next=q;
3.以下哪一个不是队列的基本运算?
()
A.在队列第i个元素之后插入一个元素B.从队头删除一个元素
C.判断一个队列是否为空D.读取队头元素的值
4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()
个不同的字符串?
A.14B.5C.6D.8
由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为()
9.下面关于图的存储的叙述中正确的是()。
A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关
B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关
C.用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关
D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关
10.设有关键码序列(q,g,mz,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?
()
A.a,g,h,mn,p,q,x,z
B.a
g,m
h,
q,n,p,x,z
C.g,m,q,a,n,p,x,h,z
D.h
g,m
p,
a,n,q,x,z
二、填空题(每空1分,共26分)
1.数据的物理结构被分为、
、
和
四种。
2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为,
在表尾插入元素的时间复杂度为。
3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是;
删除一个结点时,需要执行的操作是(假设栈不空而
且无需回收被删除结点)。
4.对于一棵具有n个结点的二叉树,一个结点的编号为i(1 孩子结点的编号为,若它有右孩子,则右孩子结点的编号为,若它有 双亲,则双亲结点的编号为。 5.当向一个大根堆插入一个具有最大值的元素时,需要逐层调整,直到被调整 至q位置为止。 6.以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为。 7.表示图的三种常用的存储结构为、和。 8.对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K%7 作为散列函数,则散列地址为0的元素有个,散列地址为6的有个。 9.在归并排序中,进行每趟归并的时间复杂度为,整个排序过程的时间复杂度为 ,空间复杂度为。 10.在一棵m阶B_树上,每个非树根结点的关键字数目最少为个,最多为 个,其子树数目最少为,最多为。 三、运算题(每题6分,共24分) 1.写出下列中缀表达式的后缀形式: (1)3X/(Y-2)+1 (2)2+X*(Y+3) 2.试对图2中的二叉树画出其: (1)顺序存储表示的示意图; (2)二叉链表存储表示的示意图。 3.判断以下序列是否是小根堆? 如果不是,将它调 整为小根堆。 (1){12,70,33,65,24,56,48,92,86,33} (2){05,23,20,28,40,38,29,61,35,76,47,100} 4.已知一个图的顶点集V和边集E分别为: V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 按照普里姆算法从顶点1出发得到最小生成树,试写出在最小生成树中依次得到的各条边。 四、阅读算法(每题7分,共14分) 1.voidAE(Stack&S){ InitStack(S); Push(S,3); Push(S,4); intx=Pop(S)+2*Pop(S); Push(S,x); inti,a[5]={1,5,8,12,15}; for(i=0;i<5;i++)Push(S,2*a[i]);while(! StackEmpty(S))cout< }该算法被调用后得到的输出结果为: 2.voidABC(BTNode*BT,int&c1,int&c2){ if(BT! =NULL){ ABC(BT->left,c1,c2); c1++; if(BT->left==NULL&&BT->right==NULL)c2++; ABC(BT->right,c1,c2); }//if } 该函数执行的功能是什么? 五、算法填空(共8分)向单链表的末尾添加一个元素的算法。 VoidInsertRear(LNode*&HL,constElemType&item) { LNode*newptr; newptr=newLNode; If() { cerr<<"Memoryallocationfailare! "< exit (1); } =item; newptr->next=NULL; if(HL==NULL) HL=; else{ LNode*P=HL; While(P->next! =NULL) p->next=newptr; } } 六、编写算法(共8分) 编写从类型为List的线性表L中将第i个元素删除的算法,(假定不需要对i的值进行 有效性检查,也不用判别L是否为空表。 ) voidDelete(List&L,inti) 模拟试卷一参考答案 一、单选题(每题2分,共20分) 1.B2.D3.A4.B5.B6.C7.A8.C9.B10.B 二、填空题(每空1分,共26分) 1•顺序链表索引散列 2.0(n)0 (1) 3.p->next=HS;HS=pHS=HS->next 4.2i2i+1i/2(或i/2) 5. 向上根 6.2.9 7.邻接矩阵邻接表边集数组 8.14 9.0(n)0(nlog2n)0(n) 10.m/2-1m-1m/2m 三、运算题(每题6分,共24分) 1. (1)3X*Y2-/1+ (2)2XY3+*+ 1 2 3 4 5 6 7 8 9 2. (1) 012345678 910111213141516 (2)见图3所示: 3. (1)不是小根堆。 调整为: {12,65,33,70,24,56,48,92,86,33} (2)是小根堆。 4.普里姆算法从顶点1出发得到最小生成树为: (1,2)3,(1,3)5,(1,4)8,(4,6)4,(2,5)10,(4,7)20 四、阅读算法(每题7分,共14分) 1.30241610210 2.该函数的功能是: 统计出BT所指向的二叉树的结点总数和叶子总数 五、算法填空(共8分,每一空2分) newptr==NULLnewptr->=datanewptrp=p->next 六、编写算法(8分) voidDelete(List&L,inti) { for(intj=i-1;j L.list[j]=L.list[j+1];//第i个元素的下标为i-1 L.size--; 模拟试卷二 单选题(每题2分,共20分) 1.在一个带有附加表头结点的单链表HL中,若要向表头插入一个由指针p指向的结点, 则执行()。 A.HL=p;p->next=HL;B.p->next=HL->next;HL->next=p; C.p->next=HL;p=HL;D.p->next=HL;HL=p; 2.若顺序存储的循环队列的QueueMaxSize=n,则该队列最多可存储()个元素.A.nB.n-1 C.n+1D.不确定 3. 下述哪一条是顺序存储方式的优点? (A.存储密度大B. 678(10),每个元素占一个空间,问A[2][3](10)存放在什么位置? (脚注(10)表示用10进制表示,m>3) A.658B.648C.633D.653 5.下列关于二叉树遍历的叙述中,正确的是()。 A.若一个树叶是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历最后一个结点 B.若一个点是某二叉树的前序遍历最后一个结点,则它必是该二叉树的中序遍历的最后一个结点 C.若一个结点是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序最后一个结点 D.若一个树叶是某二叉树的前序最后一个结点,则它必是该二叉树的中序遍历最后一个结点 6.k层二叉树的结点总数最多为(). kk-1 A.2k-1B.2K+1C.2K-1D.2k-1 7.对线性表进行二分法查找,其前提条件是(). A.线性表以方式存储,并且按关键码值排好序 B.线性表以顺序方式存储,并且按关键码值的检索频率排好序 C.线性表以顺序方式存储,并且按关键码值排好序 D.线性表以方式存储,并且按关键码值的检索频率排好序 8.对n个记录进行堆排序,所需要的辅助存储空间为 A.O(1og2n)B.O(n)C.O (1)D.O(n2) 9.对于线性表(7,34,77,25,64,49,20,14)进行散列存储时,若选用H(K) =K%7作为散列函数,则散列地址为0的元素有()个, A.1B.2C.3D.4 10.下列关于数据结构的叙述中,正确的是(). A.数组是不同类型值的集合 B.递归算法的程序结构比迭代算法的程序结构更为精炼 C.树是一种线性结构 D.用一维数组存储一棵完全二叉树是有效的存储方法 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 1. 填空题(每空1分,共26分) 数据的逻辑结构被分为、、和 一个算法的时间复杂度为(3n*34+2000nlog2叶90)/n2,其数量级表示为 对于一个长度为n的单链存储的队列,在表头插入元素的时间复杂度为_ 表尾插入元素的时间复杂度为。 假定一棵树的广义表表示为A(D(E,G),H(I,J)),则树中所含的结点数为 个,树的深度为,树的度为 后缀算式79230+-42/*的值为 对应的后缀算式为 在一棵高度为5的理想平衡树中,最少含有_在树中,一个结点的直接后继结点称为该结点的为该结点的。 在一个具有10个顶点的无向完全图中,包含有 有向完全图中,包含有条边。 假定一个线性表为(12,17,74,5,63,49,82,36),若按Key%4条件进行划分,使得同一余数的元素成为一个子表,则得到的四个子表分别为 、和对一棵B_树进行删除元素的过程中,若最终引起树根结点的合并时,会使新树的高度比原树的高度。 在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为 过程的时间复杂度为。 在线性表的散列存储中,装填因子 示待散列存储的元素的个数,则 运算题(每题6分,共 四种。 ,在 。 中缀算式(3+X*Y)-2Y/3 O .个结点,最多含有个结点。 。 一个结点的直接前趋结点称 条边,在一个具有n个顶点的 整个堆排序 在如下数组A中存储了一个线性表, A012 data next 又称为装填系数,若用m表示散列表的长度,n表等于 24分) 表头指针存放在 A[0].next,试写出该线性表。 60 50 78 90 34 40 4 0 5 2 7 1 3 2. 34567 1 2 2 5 5 2 2 6 1 3 6 4 5 4 7 6 7 7 7 5 1 1 2 2 \2 3 3 4 r5 7 (2)DeleteFront(La); InsertRear(La,DeleteFront(La)); TraverseList(La); (3)ClearList(La); For(i=0;i<5;i++) InsertFront(La,a[i]); TraverseList(La); 2.现面算法的功能是什么? voidABC(BTNode*BT) { ifBT{cout< } } 五、算法填空(共8分)二分查找的递归算法。 IntBinsch(ElemTypeA[],intlow,inthigh,KeyTypeK) { if{ intmid=(low+high)/2; if()returnmid;//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 分析 习题 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)