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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

太原理工大学数据结构试题入学考试库集及答案.docx

1、太原理工大学数据结构试题入学考试库集及答案 附录:大连理工大学2002年硕士入学试题数据结构部分(共50分) 一、算法填空题(20分) 1对以下函数填空,实现将头指针为h的单链表逆置,即原链表的第一个结点变成逆置后新链表的最后一个结点,原链表的第二个结点变成新链表的倒数第二个结点,如此等等,直到最后一个结点作为新链表的第一个结点,并返回指向该结点的指针。设单链表结点类型的定义为typedef struct node int data;strcut node *next;NODE; NODE *dlbnz(NODE*h) NODE *p,*q; q=NULL; while(h) p=h; h=h

2、-next; ; ; return q; 2假设算术表达式由字符串b表示,其中可以包含三种括号:圆括号和方括号及花括号,其嵌套的顺序随意,如()。请对以下函数填空,实现判别给定表达式中所含括号是否正确配对出现的算法。 #define M 10 int khjc(char *b) char sM; int i,j=0,f=1;j=0; for(i=0;f&bi!=0;i+) switch(bi) case (: ;break; case : ;break; case : ;break; case ): case : case :if(j=0;|bI!= ) f=0; return f& ; 3对

3、以下函数填空,实现以带头结点的单链表h为存储结构的直接选择排序。设单链表结点类型的定义为typedef struct node int key;struct node *next; NODE; void pxx(NODE *h) NODE *p,*q,*m; int z; p=h-next; while(p!=NULL) q=p-next; m=p; while(q!=NULL) if(m-keyq-key) ; ; if(p!=m) x=p-key; p-key=m-key; m-key=x; ; 二、算法设计题(30分) 请用类C或类PASCAL语言设计实现下列功能的算法。 1设二叉排序树

4、以二叉链表为存储结构,请编写一个非递归算法,从大到小输出二叉排序树中所有其值不小于X的键值。(10分) 2设由n个整数组成一个大根堆(即第一个数是堆中的最大值),请编写一个时间复杂度为O(log2n)的算法,实现将整数X插入到堆中,并保证插入后仍是大根堆。(10分) 3请编写一个算法,判断含n个顶点和e条边的有向图中是否存在环。并分析算法的时间复杂度。(10分)大连理工大学2003年硕士入学试题数据结构部分(共75分) 一、回答下列问题(20分) 1循环队列用数组A0m1)存放其数据元素。设tail指向其实际的队尾,front指向其实际队首的前一个位置,则当前队列中的数据元素有多少个?如何进行

5、队空和队满的判断? 2设散列表的地址空间为010,散列函数为H(key)=key11(为求余函数),采用线性探查法解决冲突,并将键值序列15,36,50,27,19,48依次存储到散列表中,请画出相应的散列表;当查找键值48时需要比较多少次? 3什么是m阶B-树?在什么情况下向一棵m阶B-树中插入一个关键字会产生结点分裂?在什么情况下从一棵m阶B-树中删除一个关键字会产生结点合并? 4什么是线索二叉树?一棵二叉树的中序遍历序列为由djbaechif,前序遍历序列为abdjcefhi,请画出该二叉树的后序线索二叉树。 二、请用类C或类PASCAL语言进行算法设计,并回答相应问题。(45分) 1设

6、计一非递归算法采用深度优先搜索对无向图进行遍历,并对算法中的无向图的存储结构予以简单说明。 2用链式存储结构存放一元多项式Pn(x)=P1xel+P2xe2+Pnxen,其中Pi是指数为ei的项的非零系数,且满足0e1e2firstchild=NULL) num= +numberofleaf; (r-nextbrother); else ; return(num); 2在根结点为r的二叉排序树中,插人数据域值为x的结点,要求插入新结点后的树仍是一棵二叉排序树(NULL代表空指针)。 二叉排序树的结点结构为typedef struct node int key;struct node *lc,*

7、rc;BiNode;BiNode *insert(BiNode *r,int x) BiNode *p,*q,*s; s=(BiNode*)malloc(sizeof(BiNode); s-key=x; s-lc=NULL;s-rc=NULL; q=NULL; if(r=NULL) r=s;return(r); p=r; while( ) q=p; if( ) p=p-lc; else p=p-rc if(xkey) ; else ; return; 清华大学2001年数据结构与程序设计试题 试题内容: 一、试给出下列有关并查集(mfsets)的操作序列的运算结果: union(1,2),un

8、ion(3,4),union(3,5),union(1,7),union(3,6),union(8,9),union(1,8),union(3,10),union(3,11),union(3,12),union(3,13),union(14,15),union(16,0),union(14,16),union(1,3),union(1,14)。(union是合并运算,在以前的书中命名为merge) 要求: (1)对于union(i,j),以i作为j的双亲;(5分) (2)按i和j为根的树的高度实现union(i,j),高度大者为高度小者的双亲;(5分) (3)按i和j为根的树的结点个数实现un

9、ion(i,j),结点个数大者为结点个数小者的双亲。(5分)二、设在4地(A,B,C,D)之间架设有6座桥,如下图所示: 要求从某一地出发,经过每座桥恰巧一次,最后仍回到原地。 (1)试就以上图形说明:此问题有解的条件是什么?(5分) (2)设图中的顶点数为n,试用C或Pascal描述与求解此问题有关的数据结构并编写一个算法,找出满足要求的一条回路。(10分) 三、针对以下情况确定非递归的归并排序的运行时间(数据比较次数与移动次数): (1)输人的n个数据全部有序;(5分) (2)输入的n个数据全部逆向有序;(5分) (3)随机地输入几个数据。(5分) 四、简单回答有关AVL树的问题。 (1)

10、在有N个结点的AVL树中,为结点增加一个存放结点高度的数据成员,那么每一个结点需要增加多少个字位(bit)?(5分) (2)若每一个结点中的高度计数器有8bit,那么这样的AVL树可以有多少层?最少有多少个关键码?(5分) 五、一个散列表包含hashSize=13个表项,其下标从0到12,采用线性探查法解决冲突。请按以下要求,将下列关键码散列到表中。 10 100 32 45 58 126 3 29 200 400 0 (1)散列函数采用除留余数法,用hashSize(取余运算)将各关键码映像到表中。请指出每一个产生冲突的关键码可能产生多少次冲突。(7分) (2)散列函数采用先将关键码各位数字

11、折叠相加,再用hashSize将相加的结果映像到表中的办法。请指出每一个产生冲突的关键码可能产生多少次冲突。(8分) 六、设一棵二叉树的结点定义为 struct BinTreeNode ElemType data; BinTreeNode *leftChild,*rightChild; 现采用输入广义表表示建立二叉树。具体规定如下: (1)树的根结点作为由子树构成的表的表名放在表的最前面;(2)每个结点的左子树和右子树用逗号隔开。若仅有右子树,没有左子树,逗号不能省略。(3)在整个广义表表示输入的结尾加上一个特殊的符号(例如“#”)表示输入结果。;例如,对于如右图所示的二叉树,其广义表表示为A

12、(B(D,E(G,),C(,F) 此算法的基本思路是:依次从保存广义表的字符串ls中输入每个字符。若遇到的是字母(假定以字母作为结点的值),则表示是结点的值,应为它建立一个新的结点,并把该结点作为左子女当(k=1)或右子女(当k=2)链接到其双亲结点上。若遇到的是左括号”(”,则表明子表的开始,将A置为1;若遇到的是右括号”)”,则表明子表结束。若遇到的是逗号”,”,则表示以左子女为根的子树处理完毕,应接着处理以右子女为根的子树,将A置为2。 在算法中使用了一个栈s,在进入子表之前,将根结点指针进栈,以便括号内的子女链接之用。在子表处理结束时退栈。相关的栈操作如下: MakeEmpty(s)置

13、空栈 Push(s,p)元素p进栈 Pop(s)退栈 Top(s)存取栈顶元素的函数 下面给出了建立二叉树的算法,其中有5个语句缺失。请阅读此算法并把缺失的语句补上。(每空3分)Void CreateBinTree(BinTreeNode *&BT,char ls) Stacks;MakeEmpty(s); BT=NULL; /置二叉树 BinTreeNode *p; int k; istream ins(ls); /把串ls定义为输入字符串流对象ins char ch; insch; /从ins顺序读入一个字符 while(ch!=”#”) /逐个字符处理,直到遇到#为止 switch(ch

14、) case(: (1) k=1; break; case ):pop(s); break; case , (2) break; default:p=new BinTreeNode; (3) p-leftChild=NULL; p-rightChfild=NULL; if(BT=NULL) (4) else if(k=1) top(s)-leftChild=p; else top(8)-rightChild=p; (5) | 七、下面是一个用C编写的快速排序算法。为了避免最坏情况,取基准记录pivot采用从left,right和mid= (1eft+right)/2中取中间值,并交换到righ

15、t位置的办法。数组a存放待排序的一组记录,数据类型为Type,left和right是待排序子区间的最左端点和最右端点。Void quicksort(Type a&#, int lefl,int right) Type temp; if(leftright) Type pivot=medlian3(a,left,right); int i=left,j=right-1; for( ; ;) while(ij&sIpivot) i+; while(ij&pivotaj j-; if(ipivot) temp=ai;ai=aright;aright=temp; quicksort(a,left,i-

16、1); /递归排序左子区间 quicksort(a,i+1,right);/递归排序右子区间 (1)用C或Pascal实现三者取中子程序median3(a,left,right);(5分) (2)改写quicksoft算法,不用栈消去第二个递归调用quicksort(a,j+1,right);(5分) (3)继续改写quicksort算法,用栈消去剩下的递归调用。(5分) 上海交通大学2001年数据结构及程序设计试题 注意:程序设计请采用C语言,程序应有注解及说明。回答问题简洁、清晰全面。不得采用类C之类的语言写程序。 一、参见下图,该有向图是AOE网络。该图上已标出了源点及汇点,并给出了活动

17、(边)的权值。 请求出该AOE网络的关键路径,以及事件(结点)的最早发生时间及最迟发生时间。(本题8分) 二、已知某二叉树的每个结点,要么其左、右子树皆为空,要么其左、右子树皆不空。又知该二叉树的前序序列为(即先根次序):J、F、D、B、A、C、E、H、X、I、K;后序序列为(即后根次序):A、C、B、E、D、X、I、H、F、K、Jo请给出该二叉树的中序序列(即中根次序),并画出相应的二叉树树形。(本题8分) 三、回答下列问题:(本题10分) 1)具有N个结点且互不相似的二叉树的总数是多少? 2)具有N个结点且不同形态的树的总数是多少? 3)对二叉树而言,如果它的叶子结点总数为N0,度为2的结

18、点的总为N2,则N0和N2之间的关系如何? 4)二叉树是否是结点的度最多为2的树?请说明理由。5)具有n片叶子的哈夫曼树(即赫夫曼树)中,结点总数为多少? 四、在外部分类时,为了减少读、写的次数,可以采用k路平衡归并的最佳归并树模式。当初始归并段的总数不足时,可以增加长度为零的“虚段”。请问增加的“虚段”的数目为多少?请推导之。设初始归并段的总数为m。(本题8分) 五、对平衡的排序二叉树进行删除结点的操作,必须保证删除之后平衡树中的每个结点的平衡因子是+1,-1,0三种情况之一,且该树仍然是排序二叉树。现假定删除操作是在p结点的左子树上进行的,且该左子树原高为h-l,现变为h-2。因此,必须从

19、p的左子树沿着到根的方向回溯调整结点的平衡因子,并进行树形的调整。设p是调整时遇到的第一个平衡因子力图由-1变成-2的最年轻的“前辈”结点。我们知道,以p为根的子树经调整后,高度有可能减少1。试用图形把调整前及调整后的相关结点的平衡因子、树形表示出来;仅仅针对调整后子树的高度减少1的情况即可。注意,罗列出所有可能的情况。上图可供参考。(本题10分) 六、某算法由下述方程表示。请求出该算法的时间复杂性的级别(以大O形式表示)。注意n7求解问题的规模,设n是3的正整数幂。(本题8分) 七、如右图所示,该二叉树是某棵有序树变换成的相对应的二叉树。试给出原来的有序树的形状。并回答以下问题: 1)原有序

20、树是度为多少的树? 2)原有序树的叶子结点有哪几个?3)是否所有的二叉树都可以找到相对应的有序树?必须满足什么条件?(本题5分) 八、在排序二叉树上进行查找操作时,设对树中的每个结点查找概率相同。设由n个结点构成的序列生成的排序二叉树是“随机”的。试求出在成功查找的情况下,平均查找长度是多少?为了简单起见,最后得到的递推式可不予求解。(本题8分) 九、设从键盘每次输入两个字符。如A、B,则表示存在着一条由数据场之值为字符A的结点到数据场之值为字符B的结点的有向边。依此输入这些有向边,直至出现字符!为止。试设计一个程序,生成该有向图的邻接表及逆邻接表。必须交待所用的结构、变量、加以适当注解。(本

21、题20分) 十、设二叉树中结点的数据场之值为一字符。采用二叉链表的方式存储该二叉树中的所有结点,设p为指向树根结点的指针。设计一个程序在该二叉树中寻找数据场之值为key(key为一变量,变量内容为一字符)的那个结点的所有祖先。设二叉树中结点数据场之值互不重复。(本题15分)注意:有些书上将二叉树的二叉链表存储形式称之为标准存储形式。南开大学2001年数据结构试题 一、选择题(每小题3分,共21分) 在下列各题中,每题之后均有若干个备选答案,请选出所有正确的答案,填人“ ”处。答案请写在答题纸上。 1任何一个无向连通图的最小生成树 。 只有一棵 有一棵或多棵 一定有多棵 可能不存在 2已知一棵非

22、空二叉树的 ,则能够惟一确定这棵二叉树。 先序遍历序列和后序遍历序列 先序遍历序列和中序遍历序列 先序遍历序列 中序遍历序列 , 3使用指针实现二叉树时,如果结点的个数为n,则非空的指针域个数为 。 n-1 2n-1 n+1 2n+1 4设队列存储于一个一维数组中,数组下标范围是1-n,头尾指针分别为f和r,f指向第一个元素的前一个位置,r指向队列中的最后一个元素,则队列中元素个数为 。 r-f r-f+1 (r-f+1)mod n (r-f+n)mod n 5任意一个AOE网络的关键路径 。 一定有多条 只有一条 可能不只一条 可能不存在 6下列排序算法中,在每一趟都能选出一个元素放到其最终

23、位置上的是 。 插入排序 希尔排序 快速排序 堆排序 7任意一个有向图的拓扑排序序列 。 一定有多种 只有一种 可能不存在 以上都不对 二、(7分)已知散列表地址空间为0-8,哈希函数为H(k)=kmod7,采用线性探测再散列法解决冲突。将下面关键字数据依次填入该散列表中,同时将查找每个关键字所需的比较次数m填入下表中,并求等概率下的平均查找长度。关键字值:100,20,21,35,3,78,99,45 0 1 2 3 4 5 6 7 81002021353789945 三、(12分)回答下列问题: (1)(3分)什么叫基数排序? (2)(3分)什么是AVL树中的平衡因子,它有什么特点? (3

24、)(6分)n个元素的序列k1,k2,kn满足什么条件才能称之为堆?简述对它进行堆排序的过程。 四、(10分)顺序给出以下关键字:63、23、31、26、7、91、53、15、72、52、49、68,构造3阶B-树。要求从空树开始,每插入一个关键字,画出一个树形。 五、(6分)设有向无环图G如下图所示: 试写出图G的六种不同的拓扑排序序列。 六、(10分)设二叉树以二叉链表表示,各结点的结构如下所示:leftdata subsumright 其中left、right分别为指向该结点左、右孩子的指针,data为存储关键字值的整数域,subsum中存储以该结点为根的子树中所有关键字值之和。试使用C或

25、C+语言设计算法,计算所给树T中所有结点的subsum值。 七、(12分)给出一个带表头的单链表L,L的每个结点中存放一个整数。现给定一个阈值K,将L分成两个子表L1和L2,其中L1中存放L中所有关键字值大于等于是的结点,L2中存放L中所有关键字值小于K的结点。试编程实现这个过程。要求,使用C或C+语言实现算法,L1和L2仍占用L的存储空间。 八、(10分)设有一维整数数组A,试使用C或C+语言设计算法,将A中所有的奇数排在所有偶数之前。要求,时间复杂度尽可能地少,结果仍放在A原来的存储空间。 九、(12分)简述哈夫曼编码的构造过程。华东理工大学2001年数据结构与程序设计试题 一、单选题(1

26、0分) 1若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用存储方式最节省运算时间。 A单链表 B仅有头指针的单循环链表 C双链表 D仅有尾指针的单循环链表 2若在线性表中采用折半查找法查找元素,该线性表应该 。 A元素按值有序 B采用顺序存储结构 C元素按值有序,且采用顺序存储结构 D元素按值有序,且采用链式存储结构 3对于给定的结点序列abcdef,规定进栈只能从序列的左端开始。通过栈的操作,能得到的序列为 。 Aabcfed Bcabfed Cabcfde Dcbafde 4已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀

27、形式为 。 A-A+B*C/DE B-A+B*CD/EC-+*ABC/DE D-+A*BC/DE 5如果n1和n2是二叉树T中两个不同结点,n2为n1的后代,那么按遍历二叉树T时,结点n2一定比结点n1先被访问。 A前序 B中序 C后序 D层次序 6具有65个结点的完全二叉树其深度为 。(根的层次号为1) A8 B7 C6 D5 7已知二叉树的前序遍历序列是abdgcefh,中序遍历序列是dgbaechf,它的后序遍历序列是 。 Abdgcefha B. gdbecfha Cbdgechfa Dgdbehfca8对于前序遍历和后序遍历结果相同的二叉树为 。A一般二叉树 B只有根结点的二叉树 C根结点无左孩子的二叉树 D根结点无右孩子的二叉树 9对于前序遍历与中序遍历结果相同的二叉树为 。 A根结点无左孩子的二叉树 B根结点无右孩子的二叉树 C所有结点只有左子树的二叉树 D所有结点只有右子树的二叉树 10在有n个叶子的哈夫曼树中,其结点总数为 。 A不确定 B2n C2n+1 D2n-1 二、是非题(10分) 1顺序存储方式只能用于存储线性结构。 2消除递归不一定需要使用栈。 3将一棵树转换成相应的二叉树后,根结点没有右子树

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1