数据结构练习题2.doc_第1页
数据结构练习题2.doc_第2页
数据结构练习题2.doc_第3页
数据结构练习题2.doc_第4页
数据结构练习题2.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

练习题一、 填空题1、_数据项_是数据的最小单位,_数据元素_是讨论数据结构时涉及的最小数据单位。2、设一棵完全二叉树具有100个结点,则此完全二叉树有 49 个度为2的结点。3、在用于表示有向图的邻接矩阵中,对第i列的元素进行累加,可得到第i个顶点的_入_度。4、已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树中有_12_ 个叶子的结点。根据二叉树性质3的证明过程,有n0=n2+2n3+1(n0、n2、n3分别为叶子结点、度为2的结点和度为3的结点的个数)。5、有一个长度为20的有序表采用二分查找方法进行查找,共有4个元素的查找长度为3。6、对于双向链表,在两个结点之间插入一个新结点需要修改的指针共_4_个。 删除一个结点需要修改的指针共_2_个。7、已知广义表LS=(a,(b,c,d),e),它的深度是_2_,长度是_3_。8、循环队列的引入是为了克服_假溢出_。9、表达式a*(b+c)-d/f的后缀表达式是_abc+*df/-_。10、数据结构中评价算法的两个重要指标是 时间和空间复杂度 。11、设r指向单链表的最后一个结点,要在最后一个结点之后插入s所指的结点,需执行的三条语句是_r-next=s_;r=s; r-next=null;。12、设有一个空栈,栈顶指针为1000H(十六进制),现有输入序列为1,2,3,4,5,经过PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,输出序列是_23_,而栈顶指针值是_1012_H。设栈为顺序栈,每个元素占4个字节。13、模式串P=abaabcac的next函数值序列为_01122312_。14、任意连通图的连通分量只有一个,即是 其自身 。15、栈的特性是 后进先出 。16、串的长度是 串中所包含的字符数 。17、如果一个有向图中没有回路,则该图的全部顶点可能排成一个拓扑序列。18、在具有n个叶子结点的哈夫曼树中,分支结点总数为 n-1 。19、在线性表的散列存储中,装填因子a又称为装填系数,若用m表示散列表的长度,n表示待散列存储的元素的个数,则a等于_n/m_。20、排序的主要目的是为了以后对已排序的数据元素进行 查找 。21、对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为_O(1)_,在给定值为x的结点后插入一个新结点的时间复杂度为_O(n)_。22、线性表L=(a1,a2,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是_表长的一半_。23、两个栈共享空间时栈满的条件_top2=top1+1_。24、深度为H 的完全二叉树至少有_ 2(H-1) _个结点;至多有_ 2H-1_个结点;H和结点总数N之间的关系是 H=log2N+1 _。25、在有序表A120中,按二分查找方法进行查找,查找长度为4的元素的下标从小到大依次是_1368 11 13 16 19_。26、设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较_7_次就可以断定数据元素X是否在查找表中。27、根据初始关键字序列(17,25,3,39,12)建立的二叉排序树的高度为_3_。28、设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素(包括对角线上元素)存放在n(n+1)个连续的存储单元中,则Aij与A00之间有_个数据元素。29、 栈的插入和删除只能在栈的栈顶进行,后进栈的元素必定先出栈,所以又把栈称为_表;队列的插入和删除运算分别在队列的两端进行,先进队列的元素必定先出队列,所以又把队列称为_表。30、 设一棵完全二叉树的顺序存储结构中存储数据元素为ABCDEF,则该二叉树的前序遍历序列为_,中序遍历序列为_,后序遍历序列为_。31、 设一棵完全二叉树有128个结点,则该完全二叉树的深度为_,有_个叶子结点。32、 设有向图G的存储结构用邻接矩阵A来表示,则A中第i行中所有非零元素个数之和等于顶点i的_,第i列中所有非零元素个数之和等于顶点i的_。33、typedef struct nodeint key; struct node *lchild; struct node *rchild;bitree;bitree *bstsearch(bitree *t, int k) if (t=0 ) return(0);else while (t!=0)if (t-key=k)_; else if (t-keyk) t=t-lchild; else_;34、 下面程序段的功能是实现冒泡排序算法,请在下划线处填上正确的语句。void bubble(int rn)for(i=1;i=n-1; i+)for(exchange=0,j=0; jrj+1)temp=rj+1;_;rj=temp;exchange=1;if (exchange=0) return;35、 下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句。struct recordint key; int others;int bisearch(struct record r , int k) int low=0,mid,high=n-1; while(low=high) _; if(rmid.key=k) return(mid+1); else if(_) high=mid-1;else low=mid+1; , return(0);36、设二叉树中度数为0的结点数为50,度数为1的结点数为30,则该二叉树中总共有_个结点数。37、设有向图G的二元组形式表示为G =(D,R),D=1,2,3,4,5,R=r,r=,则给出该图的一种拓扑排序序列_。38、设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则以d=4为增量的一趟希尔排序结束后的结果为_。39、设二叉排序树的高度为h,则在该树中查找关键字key最多需要比较_次.二、选择题1、从逻辑上可以把数据结构分为( )两大类。A动态结构、静态结构 B顺序结构、链式结构 C线性结构、非线性结构 D初等结构、构造型结构2、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( )(1=inext=p-next; p-next=s; Bp-next=s; s-next=p-next;Cp-next=s-next; s-next=p; Ds-next=p; p-next=s-next;21、链表不具有的特点是( )。A插入、删除不需要移动元素 B可随机访问任一元素 C不必事先估计存储空间 D所需空间与线性长度成正比22、一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )。 A. 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 223、递归过程或函数调用时,处理参数及返回地址,要用一种称为( )的数据结构。A队列 B多维数组 C栈 D. 线性表24、设给定权值总数有n 个,其哈夫曼树的结点总数为( ) 。A不确定 B2n C2n+1 D2n-125、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是( )。 A. 快速排序 B. 堆排序 C. 归并排序 D. 直接插入排序26、设有一个二维数组Amn,假设A00存放位置在644(10),A22存放位置在676(10),每个元素占一个空间,问A33(10)存放在什么位置?脚注(10)表示用10进制表示。 A688 B678 C692 D69627、若有18个元素的有序表存放在一维数组A19中,第一个元素放A1中,现进行二分查找,则查找A3的比较序列的下标依次为( )A. 1,2,3B. 9,5,2,3 C. 9,5,3D. 9,4,2,328、设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( )。(A) 2,3,5,8,6(B) 3,2,5,8,6(C) 3,2,5,6,8(D) 2,3,6,5,829、设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为( )A q=p-next;p-data=q-data;p-next=q-next;free(q);B q=p-next;q-data=p-data;p-next=q-next;free(q);C q=p-next;p-next=q-next;free(q);D q=p-next;p-data=q-data;free(q);30、设某二叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为2的结点数为N2,则下列等式成立的是( )。A N0=N1+1B. N0=Nl+N2C. N0=N2+1D. N0=2N1+l31、设一棵m叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为m的结点数为Nm,则N0=( )。A. Nl+N2+NmB. l+N2+2N3+3N4+(m-1)NmC. N2+2N3+3N4+(m-1)Nm D. 2Nl+3N2+(m+1)Nm32、设无向图G中的边的集合E=(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c),则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为( )。A. aedfcb B. acfebd C. aebcfd D. aedfbc三、判断题1如果两个串含有相同的字符,则这两个串相等。(N )2数组可以看成线性结构的一种推广,因此可以对它进行插入、删除等运算。( N)3二叉树是度为2的树。(N )4在顺序表中取出第i个元素所花费的时间与i成正比。( N )5在栈满情况下不能作进栈运算,否则产生“上溢”。( Y)6图G的生成树是该图的一个极小连通子图。(N )7所谓数据的逻辑结构指的是数据之间的逻辑关系。(N )8二叉排序树的查找和折半查找的时间性能相同。(N )9在执行某个排序算法过程中,出现了排序码朝着最终排序序列位置相反方向移动,则该算法是不稳定的。(N )10一个有向图的邻接表和逆邻接表中表结点的个数一定相等。( Y)11、双向链表中至多只有一个结点的后继指针为空。(Y )12、在循环队列中,front指向队列中第一个元素的前一位置,rear指向实际的队尾元素,队列为满的条件是front=rear。( N )13、对链表进行插入和删除操作时,不必移动结点。( Y )14、栈可以作为实现程序设计语言过程调用时的一种数据结构。( Y )15、在一个有向图的拓朴序列中,若顶点a在顶点b之前,则图中必有一条弧 (N ) 。16、对有向图G,如果从任一顶点出发进行一次深度优先或广度优先搜索就能访问每个顶点,则该图一定是完全图。( N ) 若一个图的每一对不同顶点恰有一条边相连,则称为完全图。17、“顺序查找法”是指在顺序表上进行查找的方法。( N )18、向二叉排序树插入一个新结点时,新结点一定成为二叉排序树的一个叶子结点。(Y )19、二分查找要求序列顺序存储且关键字序列有序。(Y )20、二路归并时,被归并的两个子序列中的关键字个数一定要相等。( N )调用一次深度优先遍历可以访问到图中的所有顶点。( N )21分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。(Y )22冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。( Y )23满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。( Y )24设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。( N )25层次遍历初始堆可以得到一个有序的序列。( N )26设一棵树T可以转化成二叉树BT,则二叉树BT中一定没有右子树。( Y )27线性表的顺序存储结构比链式存储结构更好。( N)28中序遍历二叉排序树可以得到一个有序的序列。( Y )29.快速排序是排序算法中平均性能最好的一种排序。( N )30不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑“溢出”情况。( Y )31当向二叉排序树中插入一个结点,则该结点一定成为叶子结点。( Y )32设某堆中有n个结点,则在该堆中插入一个新结点的时间复杂度为O(log2n)。( Y )33完全二叉树中的叶子结点只可能在最后两层中出现。(Y )34哈夫曼树中没有度数为1的结点。(N )35对连通图进行深度优先遍历可以访问到该图中的所有顶点。(Y )36先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列。(Y) 37由树转化成二叉树,该二叉树的右子树不一定为空。(Y )38线性表中的所有元素都有一个前驱元素和后继元素。( N)39.带权无向图的最小生成树是唯一的。( N )四、应用题1、已知一棵二叉树的先根序列和中根序列分别为ABDGHECFIJ及GDHBEACIJF,请画出这棵二叉树,并给出其后序序列。2、将下列由三棵树组成的森林转换为二叉树。(只要求给出转换结果)NPGHJMOLIKEDFBAC3、已知无向图如下所示:(1)给出从V1开始的广度优先遍历序列;(2)画出它的邻接表;(3)画出从V1开始深度优先遍历生成树 4、假定用于通讯的电文仅有8个字母C1,C2,C8组成,各个字母在电文中出现的频率分别为5,25,3,6,10,11,36,4,请先构建一棵哈夫曼树,计算其WPL值,并为这8个字母设计相应的哈夫曼编码。5、已知一表为(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec),按表中顺序依次插入初始为空的二叉排序树,要求:(1)画出建立的二叉排序树(值的大小以字母顺序为准)。(2)对该二叉排序树作中序遍历,试写出遍历序列。(3)求出在等概率情况下查找成功的平均查找长度。6、已知一个图的顶点集V和边集G分别为: V=0,1,2,3,4,5,6,7;E=(0,1)8,(0,2)5,(0,3)2,(1,5)6,(2,3)25,(2,4)13,(3,5)9,(3,6)10, (4,6)4,(5,7)20; 按照普里姆算法从顶点0出发得到最小生成树,试写出在最小生成树中依次得到的各条边。_, _, _, _, _, _, _。7、已知散列函数为H(K)=K mod 11,健值序列为47,7,29,11,16,92,22,8,3哈希表长为11,采用线性探测法处理冲突,试构造闭散列表,并计算查找成功和不成功的平均查找长度。8、已知待排序的序列为(503,87,512,61,908,170,897,275,653,462),试完成下列各题。(1) 根据以上序列建立一个堆(画出第一步和最后堆的结果图),希望先输出最小值。(2) 输出最小值后,如何得到次小值。(并画出相应结果图)。9、下图表示一个地区的交通网,顶点表示城市,边表示连结城市间的公路,边上的权表示修建公路花费的代价。怎样选择能够沟通每个城市且总造价最省的n-1条公路,画出一个方案。v2v4v1v5v3v61621111433619186510、已知图G=(V, E),其中V=v1,v2,v3,v4,v5, E=, , , , ), ;画出这个图的图形并写出所有的拓扑序列。11、设有关键码序列20,35,40,15,30,25,38,请给出平衡二叉树的构造过程(只需要给出不平衡时到平衡的过程即可)。 12、已知散列函数为H(K)=K mod 13,健值序列为13,41,15,44,06,68,12,25,38,64,19,49,采用拉链法处理冲突,试构造开散列表,并计算查找成功的平均查找长度。13、对于下列一组关键字46,58,15,45,90,18,10,62,试写出快速排序每一趟的排序结果。14、在如下数组A中链接存储了一个线性表,表头指针为A 0.next,试写出该线性表。 A 0 1 2 3 4 5 6 7 Data605078903440Next3572041五、算法与程序设计1、阅读算法完成题目要求:(1)说出下列算法的功能。 template struct Binnode T data; Binnode *prior, *next; ;bool Unknown (Binnode *first) Binnode *p,*q; p=first-next; q=first-prior; while(p!=q & p-prior!=q) if(p-data=q-data) p=p-next; q=q-prior; else return 0;return 1;算法功能: (2)根据下列算法和输入的数据画出生成的链表形式。template LinkList: LinkList( int n) first=new Node; Node *s; T x; first-next=NULL; for (int i=0; ix;s=new Node; s-data=x; s-next=first-next; first-next=s; 输入数据为:1 2 3 4 5 6 输出结果为:(3)说出下列算法的功能,它是采用什么结构实现的。 template void BiTree:Unknown (BiNode *root) const int MaxSize = 100; int front = 0; int rear = 0; BiNode* QMaxSize; BiNode* q;if (root=NULL) return;elseQrear+ = root;while (front != rear)q = Qfront+; coutdatalchild != NULL) Qrear+ = q-lchild;if (q-rchild != NULL) Qrear+ = q-rchild; 算法功能: (4)阅读下列算法求出调用该算法后输出结果。void AE(Stack& S) InitStack(S); Push(S,30); Push(S,40); Push(S,50); int x=Pop(S)+2*Pop(S); Push(S,x); int i,a4=5,8,12,15; for(i=0;i4;i+) Push(S,ai); while(!StackEmpty(S) coutPop(S) ; 输出结果为:(5)设有一个正整数序列组成的非递减有序单链表,阅读下面的算法,指出该算法的功能,并在“/后面加上必要的注释。void F1(Linklist L;int,x) p= Lnext; q=p; /p为工作指针pre=L; Lnext=NULL; ./q指最小元素while(P&Pdatax)/ (1)比x小的数递减r=pnext; pnext=Lnext;Lnext=p; p=r; /(2)置逆/whileqnext=p; pre=q; /(3)重新链接/F1算法功能: (6)设有一个由正整数组成的无序单链表,阅读下面的算法,指出该算法的功能。void F1(Linklist &L) p=Lnext; pre=p; /pre为最小结点指针while(p) if(pdatanext; while(p& pnextdata!=x) q=p;p=pnext; if(p) qnext=pnext; free(p); 算法的功能: 2、程序设计(1) 设有一单链表L,结点结构为data|next,编写算法判断该单链表L中的元素是否成等差关系,即:设各元素值次为a1,a2,a3,an,判断ai+1-ai=ai-ai-1是否成立。若是返回1,否则返回0。 函数说明为:int dengcha(Node *L); (2)写出二分查找的非递归算法。(要求统计查找过程中元素的比较次数) 函数说明为: int binsearch(int r , int n,int k); (3)设单链表以非递减有序排列,设计算法实现在单链表中删除值相同的多余结点。 函数说明为:Void Linklist:purge(Node * first); (4)写出图在邻接表存储结构下广度优先的遍历算法。 函数说明为:template 函数说明为:void ALGraph :BFSTraverse(int v); (5)编写计算二叉树最大宽度的算法(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)。 (5)int Width(BiTree bt) if (bt=null) return (0); else BiTree Q; front=1;rear=1;last=1; temp=0; maxw=0; Qrear=bt; while(frontlchild!=null) Q+rear

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论