《数据结构模拟试题及答案(共9页).doc》由会员分享,可在线阅读,更多相关《数据结构模拟试题及答案(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数据结构模拟试题3一、 单项选择题1带头结点的单向链表为空的判断条件是( )(设头指针为head)。Ahead = =NULL Bhead!=NULL Chead-next= =head Dhead-next= =NULL2非空的单向循环链表的尾结点满足( )(设头指针为head,指针p指向尾结点)。 Ap-next = =NULL Bp= =NULL Cp= =head Dp-next= =head 3算法的时间复杂度与( )有关。 A所使用的计算机 B计算机的操作系统 C算法本身 D数据结构4设有一个长度为n的顺序表,要删除第i个元素需移动元素的个数为( )。 A
2、n-i+1 Bn-i Cn-i-1 Di5在一个单链表中p所指结点之后插入一个s所指的结点时,可执行( )。 Ap=snext Bpnext=snext; Csnext=pnext; pnext=s; Dpnext= s; snext= pnext6在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为( )。 Ar=fnext; Br=rnext; Cf=fnext; Df=rnext;7元素1,3,5,7按顺序依次进栈,则该栈的不可能输出序列是( )(进栈出栈可以交替进行)。 A7,5,3,1 B7,5,1,3C3,1,7,5 D1,3,5,7 8在C语言中,顺序存储长度为3
3、的字符串,需要占用( )个字节。 A4 B3 C6 D129在一棵二叉树中,若编号为i的结点存在左孩子,则左孩子的顺序编号为( )。 A2i B2i-1 C2i+1 D2i+210一棵具有35个结点的完全二叉树,最后一层有( )个结点。 A4 B6 C16 D811在一个无向图中,所有顶点的度数之和等于边数的( )倍。 A3 B2 C2.5 D1.5 12已知如图3所示的一个图,若从顶点V1出发,按广度优先法进行遍历,则可能得到的一种顶点序列为( )。 AV1V2V4V8V5V3V6V7 BV1V2V4V5V8V3V6V7CV1V2V4V8V3V5V6V7 DV1V3V6V7V2V4V5V8V
4、6V7V1V2V3V8V4V5 图313对二叉排序树进行( )遍历,可以使遍历所得到的序列是有序序列。 A按层次 B后序 C中序 D前序14设已有m个元素有序,在未排好序的序列中挑选第m+1个元素,并且只经过一次元素的交换就使第m+1个元素排序到位,该方法是( )。 A折半排序 B冒泡排序 C归并排序 D简单选择排序15一组记录的关键字序列为(47,80,57,39,41,46),利用堆排序(堆顶元素是最小元素)的方法建立的初始堆为( )。 A39,47,46,80,41,57 B39,41,46,80,47,57C41,39,46,47,57,80 D39,80,46,47,41,57二填空
5、题1算法的5个特征为_。2要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。则比较的次数和算法的时间复杂度分别为_和 _ 。3在一个单向链表中p所指结点之后插入一个s所指向的结点时,应执行s-next=p-next;和 的操作。4在一个单向链表中,要删除p所指结点,已知q指向p所指结点的前驱结点。则可以用操作_。5向一个栈顶指针为h的链栈中插入一个s所指结点时,可执行s-next=h; 和 操作。(结点的指针域为next)6在一个链队中,设f和r分别为队头和队尾指针,则插入s所指结点的操作为r-next=s;和 (结点的指针域为next)。7.两个串相等的充分必要条件是_ _。
6、8在二叉树的链式存储结构中,通常每个结点中设置三个域,它们是_、 、 。9一棵二叉树中有2n-2条边(结点间的连线),其中每一个非叶结点的度数都为2,则该树共有_个非叶结点。10如图1所示的二叉树,其中序遍历序列为_ _。gfabdecefgibachd图2图111如图1所示的二叉树,其后序遍历序列为_。12哈希函数是记录关键字值与该记录存储地址之间所构造的对应关系。13n个元素进行冒泡法排序,通常需要进行_趟冒泡,第j趟冒泡要进行_次元素间的比较。三、综合题1已知序列11,19,5,4,7,13,2,10 (1)试给出用归并排序法对该序列作升序排序时的每一趟的结果。(2)对上述序列用堆排序的
7、方法建立初始堆(要求小根堆,以二叉树描述建堆过程)。2设查找表为(7,15,21,22,40,58,68,80,88,89,120) ,元素的下标依次为1,2,3,,11. (1)画出对上述查找表进行折半查找所对应的判定树(树中结点用下标表示)(2)说明成功查找到元素40需要经过多少次比较?(3)求在等概率条件下,成功查找的平均比较次数?3(1)如果二叉树中任一结点的值均大于其左孩子的值、小于其右孩子的值,则该树为二叉排序树,这种说法是否正确?若认为正确,则回答正确,若认为不正确,则举例说明。 (2)设有数据集合40,29,7,73,101,4,55,2,81,92,39,依次取集合中各数据,
8、构造一棵二叉排序树.4(1)“一棵二叉树若它的根结点的值大于左子树所有结点的值,小于右子树所有结点的值,则该树一定是二叉排序树”。该说法是否正确,若认为正确,则回答正确,若认为不正确则说明理由?(2)设有查找表7,16,4,8,20,9,6,18,5,依次取表中数据构造一棵二叉排序树. 对上述二叉树给出后序遍历的结果.5(1)对给定权值2,1,3,3,4,5,构造哈夫曼树。(2)同样用上述权值构造另一棵哈夫曼树,使两棵哈夫曼树有不同的高度,并分别求两棵树的带权路径长度。四、程序填空题1以下是用尾插法建立带头结点且有n个结点的单向链表的程序,结点中的数据域从前向后依次为1,2,3,n,完成程序中
9、空格部分。NODE *create(n)NODE *head , *p, *q; int i; p=(NODE*)malloc(sizeof(NODE);head= ; ;pnext=NULL; /*建立头结点*/for(i=1; idata=i; p-next=NULL; q-next= ; ;return(head);2设线性表为(6,10,16,4),以下程序用说明结构变量的方法建立单向链表,并输出链表中各结点中的数据。 #define NULL 0 void main( ) NODE a,b,c,d,*head,*p;a.data=6;b.data=10;c.data=16;d.dat
10、a=4; /*d是尾结点*/head= ;a.next=&b;b.next=&c;c.next=&d; ; /*以上结束建表过程*/p=head; /*p为工作指针,准备输出链表*/do printf(“%dn”, ); ; while( );3以下程序是中序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和right,数据域data为字符型,BT指向根结点)。void Inorder (struct BTreeNode *BT) if(BT!=NULL) ; ; ; 4以下程序是中序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为l
11、eft和right,数据域data为字符型,BT指向根结点)。 void Inorder (struct BTreeNode *BT)efabcdif(BT!=NULL) (1) ; (2) ;Inorder(BT-right);利用上述程序对右图进行遍历,结果是 ;综合练习题答案一、单项选择题1D 2D 3C 4B 5C 6C 7B 8A 9A 10A 11B 12A 13C 14D 15B二、填空题1有穷性、确定性、可行性、零个或多个输入、一个或多个输入2n-1,O(n) 3s-next=p-next; 4q-next=p-next; 5s-next=h; 6r-next=s; 7串长度相
12、等且对应位置的字符相等8值域、左指针、右指针9n-110dgbaechif 11gdbeihfca12存储地址 13n-1,n-j三、综合题1(1) 初始 11,19,5,4,7,13,2,10第一趟 11,194,57,132,10第二趟 4,5,11,192,7,10,13 第三趟 2,4,5,7,11,10,11,13(2)2101151974131351011197247131013191125419247105112(1)4711852101396(2)4次(3)ASL=(1+2*2+3*4+4*4)/11=331542 (1)不正确,例 395592814101724073529(
13、2)4(1)不正确,二叉排序树要求其子树也是二叉排序树。468952071618(2)后续遍历 5,6,4,9,8,18,20,16,753418117633125(1) wpl1=451871131233465 (2) wpl2=45四、程序填空题1 pq=p(NODE*)malloc(sizeof(NODE)pq=p2 &adnext= =NULLpdatap=pnextp!=NULL3 Inorder(BT-left); printf(“%c”,BT-data); Inorder(BT-right);4 Inorder(BT-left); printf(“%c”,BT-data); dbeafc专心-专注-专业