数据结构模拟试题.docx
- 文档编号:9303331
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:19
- 大小:257.27KB
数据结构模拟试题.docx
《数据结构模拟试题.docx》由会员分享,可在线阅读,更多相关《数据结构模拟试题.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构模拟试题
模拟试题1
、选择题(共10题,每题1分,共10分)
1.下面关于线性表的叙述中,错误的是哪一个?
()
A.线性表采用顺序存储,必须占用一片连续的存储单元
B.线性表采用顺序存储,便于进行插入和删除操作
C.线性表采用链接存储,不必占用一片连续的存储单元
D.线性表采用链接存储,便于插入和删除操作
2.
s所指结
在一个单链表中,已知q所指结点是p所指结点的前驱,若在p和q之间插入点,则执行的操作是()。
A.s->next=p->next;p->next=s;
B.q->next=s;s->next=p;
C.p->next=s->next;s->next=p;
D.p->next=s;s->next=q;
3.设有三个元素XY,Z顺序进栈,下列得不到的出栈排列是()。
A.XYZB.YZXC.ZXYD.ZYX
4.若用一个长度为6的数组来实现循环队列,且当前rear和front的值分别为则从队列中删除一个元素,再增加两个元素后,rear和front的值分别是(
A.1和5B.2和4C.4和2D.5和1
5.下列说法中正确的是()。
6.
.二叉树中不存在度大于2的结点
二叉树就是度为2的树B
9.对17个元素的查找表做折半查找,则查找长度为5的元素下标依次是(
A.8,17B.5,10,12C.9,16D.9,17
10.关于排序,下列说法中正确的是()。
A.稳定的排序方法优于不稳定的排序方法,因为稳定的排序方法效率较高
B.在顺序表上实现的排序方法在链表上也可以实现
C.在链表上可以实现简单选择排序,但是难以实现堆排序
D.就平均性能而言,堆排序最佳
、填空题(共10空,每空2分,共20分)
1.计算机执行下面的语句时,语句s的执行次数为。
for(i=l;i for(j=n;j>=i;j--)s; 2.队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是 3.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为 的内存单元中,则元素A[5,5]的地址是。 4.一棵有124个叶子结点的完全二叉树,最多有个结点。 5.N个顶点的无向连通图若要存在回路,则至少需要条边。 6.对于一棵二叉排序树做遍历,可以得到一个有序的序列。 7.进行折半查找的两个先决条件是查找表中数据有序和。 &按{12,24,36,90,52,30}的顺序构成的平衡二叉树,其根结点是。 9.时间复杂度为O(nlg2n)且稳定的排序算法是排序。 10.快速排序在情况下会蜕变成为冒泡排序。 三、应用题(共5题,每题10分,共50分) 1.设一棵二叉树的先序遍历序列: ABDFCEGH中序遍历序列: BFDAGEHC (1)画出这棵二叉树。 (2)将这棵二叉树转换成对应的树(或森林)。 2.给定一组数列(15,8,10,21,6,19,3)分别代表字符A,B,C,D,E,F,G出现的频度,画出 Huffman树,并给出各字符的Huffman编码。 3.根据Prim算法或Kruskal算法,求右图的最小生成树。 4•某一工程作业的网络图如右图所示,其中箭头表示作业,箭头边的数字表示完成作业所需的天数。 箭头前后的圆圈表示事件的编号。 求出所有事件开始的最早时间和最晚时间, 并给出关键路径。 5.设哈希函数H(k)=3*Kmod11,散列地址空间为0〜10,对关键字序列(32,13,49,24,38,21,4,12)按线性探测再散列的方法解决冲突,构造哈希表,并求出 等概率下查找成功时的平均查找长度 四、程序设计题(共2题,共20分) 1.设有两条带头结点单链表La和Lb,且表中的数据有序递增。 现要将两条单链表合并成为一条单链表Lc,并使Lc中的数据有序递减.。 试写算法来实现,并说明算法的时间复杂度。 2.写算法判断两棵二叉树是否相似。 相似的条件是: 要么它们都为空或者都只有一个根结点,要么它们的左右子树均相似。 试题参考答案 选择题1-5BACBB6-10CDCAC 填空题 1 (n+3)(n-2)/2 2FIFO 3 1175 4248 5 N-1 6 中序遍历 7 顺序存储 836 9 归并排序 10 数据基本有序 操作题 1、 3、 4、略 5、 散列地址 0 1 2 3 4 5 6 7 8 9 10 关键字 4 12 49 38 13 24 32 21 比较次数 1 1 1 2 1 2 1 2 ASLsucc=(1+1+1+2+1+2+1+2)/8=11/8 算法设计 1voidMerge(LinkedListla,Linklistlb) {pa=La->next;pb=Lb->next; Lc=La; while(pa&&pb){if(pa_>data<=pb_>data) {Lc->next=pa;Lc=pa;pa=pa->next;}else{Lc->next=pb;Lc=pb;pb=pb->next} } Lc->next=pa? pa: pb;free(Lb); } 2statussam(BiTreeTa,BiTreeTb)//判断相似{if(! Ta&&! Tb)returnOK; else{if(Ta&&! Tb||! Ta&&Tb)returnFalse;else{p=same(Ta->lchild,Tb->lchild);if(p)p=same(Ta->rchild,Tb->rchild); returnp; } }//结束 模拟试题2 一、选择题(共10题,每题1分,共10分) 1.下面关于线性表的叙述中,错误的是哪一个? () A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 2.在双向链表指针p的结点前插入一个指针q的结点操作是()。 A.p->prior=q;q_>next=p;p->prior->next=q;q->prior=q; B.p->prior=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=q;p->prior=q;p->prior=q; 3.设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是 ()。 A.XYZB.YZXC.ZXYD.ZYX 4.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。 A.队列B.多维数组C.栈D.线性表 5.循环队列存储在数组A中,数组长度为m,则入队时的操作为()。 A.rear=rear+1B.rear=(rear+1)%(m-1) C.rear=(rear+1)%mD.rear=(rear+1)%m 6.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000 的内存单元中,则元素A[5,5]的地址是()。 &一棵非空的二叉树的先序遍历序列与中序遍历序列正好相同,则该二叉树一定满足 1.计算机执行下面的语句时,则其复杂时间度为0()。 for(i=l;i for(j=n;j>=1;j--)s; 2.栈的数据进出特点是。 3.在顺序表中做插入和删除操作,移动元素的个数大约等于表程长度的。 4.深度为5的完全二叉树,其结点至少有_______个,至多有_______个。 5.对一棵完全二叉树按照层次编号,编号为i(i>1)的结点的双亲结点的编号是 6.对于一棵二叉排序树做遍历,可以得到一个有序的序列。 7.己知有序表为(12,18,24,35,47,50,62,83,90,115,134)当用二分法查找时,第二次查 找即查找成功的数据是或。 &归并排序算法的时间复杂度为。 三、操作题(共5题,每题10分,共50分) 1.设一棵二叉树的先序、中序遍历序列分别为,先序遍历序列: ABDFCEGH中序 遍历序列: BFDAGEHC,画出这棵二叉树。 2.给定集合{1,2,3,4,5,6},试构造一棵哈夫曼树。 3.根据普利姆算法或克鲁斯卡尔算法,求它的最小生成树。 4. 5.设一数组中原有数据如下: 15,13,20,18,12,60。 试写出每一趟快速排序的结果。 四、程序设计题(共2题,共20分) 1.设有一个无序单链表,删除单链表中第i个元素,写算法实现。 2.写出希尔排序的算法。 1(n+3)(n-2)/2 32_丄 52^6 738 试题参考答案 选择题1-5BCCCD6-10ABADB 填空题 2FIFO 42二2k-1 中序遍历归并 操作题 1、 3、 A 2 A D F 3 A D 3 2 A D 3 G B 3 G 2 D 4 C A D ► C B 3 3 G 1 2、wpl=51 散列地址 0 1 2 3 4 5 7 8 g 10 11 12 13 14 15 16 关键宇 Apr Aug Bee Feb Jan Mar May Jun 丁讥 Sep Oct Nov 比较次数 1 2 1 1 1 i 2 4 5 2 5 6 b= 13 A AI A A A A A 0123456789 Apr Aug A Jun May A Nev A Jul]人 4、a: ASLsucc=31/12 5①快速排序 算法设计 (2)b: ASGcc=18/12 1voidMiniValue(LinkedListla) //la是数据域为正整数且无序的单链表,本算法查找最小值结点且打印。 若最小值结点的数值是奇数,则与后继结点值交换;否则,就删除其直接后继结点。 {p=la->next;//设la是头结点的头指针,p为工作指针。 pre=p;//pre指向最小值结点,初始假定首元结点值最小。 while(p->next! =null)//p->next是待比较的当前结点。 {if(p_>next->data p=p->next;//后移指针 } printf("最小值=%d\n”,pre->data); if(pre->data%2! =0)//处理奇数 if(pre->next! =null)//若该结点没有后继,则不必交换 {t=pre->data;pre->data=pre->next->data;pre->next->data=t;}〃交换完 毕 else//处理偶数情况if(pre->next! =null)//若最小值结点是最后一个结点,则无后继 {u=pre->next;pre->next=u->next;free(u);}〃释放后继结点空间 2voidCount(BiTreebt,int*n0,*n)//统计二叉树bt上叶子结点数n0和非叶子结点数n {if(bt) {if(bt->lchild==null&&bt->rchild==nuII)*n0++;//叶子结点 else*n++;//非叶结点 Count(bt->lchild,&n0,&n); Count(bt->rchild,&n0,&n); }}//结束Count 模拟试题3 、选择题共10题,每题1分,共10分) 1.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2) 栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。 A.|top[1]-top[2]|=1B.top[1]+1=top[2] C.top[1]+top[2]=mD.top[1]=top[2] 2.用链接方式存储的队列,在进行插入运算时(). A.仅修改头指针B.头、尾指针都要修改 C.仅修改尾指针D.头、尾指针可能都要修改 3. 以下数据结构中哪一个是非线性结构? () 6. )的数据结构。 递归过程或函数调用时,处理参数及返回地址,要用一种称为( A.队列B.多维数组C.栈D.线性表 7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查 找,则查找A: 3]的比较序列的下标依次为() B. A.1,2,3 9,5,2,3 C.9,5,3D.9,4,2,3 8. 对n个记录的文件进行快速排序,所需要的辅助存储空间大致为 A.p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q B.p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink; C.q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q; D.q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;序 二、填空题(共10空,每空2分,共20分) 1.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指 针。 在这种存储结构中,n个结点的二叉树共有个指针域,其中有个指针 域是存放了地址,有个指针是空指针。 2.循环队列的引入,目的是为了克服。 3.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点 分别有个和个。 4.已知完全二叉树的第4层有3个叶子结点,则整个二叉树最多有结点。 5.二叉树的后序遍历序列与中序遍历序列相同,则此二叉树。 6.n个顶点的连通无向图,其边的条数至少为__。 7对二叉排序树进行遍历,可以得到该二叉树所有结点构成的有序序列。 、应用题(共6题,共48分) 1有一份电文中共使用5个字符: a,b,c,d,e,它们的出现频率依次为4,7,5,2,9。 试构造对应的Huffman树(按照左子树根结点的权小于等于右子树根结点的权的次序构造), 并求出每个字符的Huffman编码和树的带权路径长度。 2.已知一棵二叉树的前序遍历的结果是ABDFCEGH,中序遍历的结果是BFDAGEHC,试画出这棵二叉树。 3.已知一个无向图如下图所示,用Prim或者Kruskal算法生成最小树(假设以①为起点,试画出构造过程)。 20 10 4.判别以下序列是否是堆(大顶堆),如果不是,则把它调整为堆。 (12,70,33,65, 24,56,48,92,86,33) 5.设一个散列表下标从0到18,采用二次探测法解决冲突。 请将关键字{19,1,23,14,55,20,84,27,68, 11,10,77}采用哈希函数。 H(key)=key%13将各关键码映像到表中。 并给出在等概率情况下查找成功时的平均查找长度。 6.请阅读下列算法,回答问题 voidsort(r,n) {FOR(i=2;i<=n;i++) {x=r(i);r(O)=x;j=i-1; WHILE(x.key {r(j+1): =r(j);j: =j-1;} r(j+1)=x}} 问题一: 这是什么类型的排序算法,该排序算法稳定吗? 问题二: 设置r(O)的作用是什么? 若将WHILE语句中判断条件改为x.key<=r(j).KEY,该算 法将会有什么变化,是否还能正确工作? 三、算法题(共2题,共12分) 1.设单链表的表头指针为h,结点结构由data和next两个域构成,其中data域为字符型。 写出算法dc(h,n),判断该链表的前n个字符是否中心对称。 例如xyx,xyyx都是中心对称。 2•以下程序是二分查找的递归算法。 ,请填空使之完善。 IntBinsch(ElemTypeA[],intlow,inthigh,KeyTypeK) { if{intmid=(low+high)/2; )returnmid;// if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 模拟 试题