数据结构复习题目题目库.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流数据结构复习题目题目库.精品文档.一、单项选择题(本大题共71小题,每小题2分,共142分)1、一个对象序列的排序码为46,79,56,38,40,84,采用快速排序以位于最左位置的对象为基准而得到的第一次划分结果为( C )。( ) A38,46,79,56,40,84 B38,79,56,46,40,84 C40,38,46,56,79,84 D38,46,56,79,40,84标准答案:C2、广义表(a),a)的表头是( C )。( ) Aa Bb C(a) D(a)标准答案:C3、数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是( C )。( ) A80 B100 C240 D270标准答案:C4、在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。( ) AHL=p;p->next=HL; Bp->next=HL;HL=p; Cp->next=HL;p=HL; Dp->next=HL->next;HL->next=p;标准答案:B5、一个具有n个顶点的无向完全图的边数为( )。( ) A(n+1)/2 Bn(n-1)/2 Cn(n-1) Dn(n+1)标准答案:B6、如果待排序序列中两个数据元素具有相同的值,在排序后它们的位置发生颠倒,则称该排序是不稳定的。下列选项中,( )就是不稳定的排序方法。( ) A起泡排序 B归并排序 C直接插入法排序 D简单选择排序标准答案:D7、按照二叉树的定义,具有3个结点的二叉树有( )种。( ) A3 B4 C5 D6标准答案:C8、设有1000个元素,用二分法查找时,最大比较次数是( )。( ) A1 B7 C10 D25标准答案:C9、树适合用来表示( )。( ) A有序数据元素 B无序数据元素 C元素之间具有分支层次关系的数据 D元素之间无联系的数据标准答案:C10、设有两个串p和q,求p在q中首次出现的位置的运算称作( )。( ) A连接 B模式匹配 C求子串 D求串长标准答案:B11、将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为1。编号为49的结点X的双亲编号为( )。( ) A23 B24 C25 D无法确定标准答案:A12、串的长度是( )。( ) A串中不同字符的个数 B串中不同字母的个数 C串中所含字符的个数且字符个数大于0 D串中所含字符的个数标准答案:D13、已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是( )。( ) Aacbed Bdecab Cdeabc Dcedba标准答案:D14、顺序表中逻辑上相邻的节点其物理位置也( )。( ) A一定相邻 B不必相邻 C按某种规律排列 D无要求标准答案:A15、数据结构是研究数据的( )以及它们之间的相互关系。( ) A理想结构,物理结构 B理想结构,抽象结构 C物理结构,逻辑结构 D抽象结构,逻辑结构标准答案:C16、由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( )。( ) A24 B48 C53 D72标准答案:C17、某二叉树的先序序列和后序序列正好相反,则该二叉树一定是( )的二叉树。( ) A空或只有一个结点 B高度等于其结点数 C任一结点无左孩子 D任一结点无右孩子标准答案:B18、下列排序算法中,( )排序在每趟结束后不一定能选出一个元素放到其排好序的最终位置上。( ) A选择 B冒泡 C归并 D堆标准答案:C19、广义表(a,b,c,d)的表尾是( )。( ) Aa Bb C(a,b) D(b,c,d)标准答案:D20、具有65个结点的完全二叉树其深度为( )。( ) A8 B7 C6 D5标准答案:B21、在内部排序中,排序时不稳定的有( )。( ) A插入排序 B冒泡排序 C快速排序 D归并排序标准答案:C22、向堆中插入一个元素的时间复杂度为( )。( ) AO(log2n) BO(n) CO(1) DO(nlog2n)标准答案:A23、在一个单链表HL中,若要在指针q所指的结点的后面插入一个由指针p所指的结点,则执行( )。( ) Aq->next=p->next;p->next=q; Bp->next=q->next;q=p; Cq->next=p->next;p->next=q; Dp->next=q->next;q->next=p;标准答案:D24、线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。( ) A必须是连续的 B部分地址必须是连续的 C一定不是连续的 D连续不连续都可以标准答案:D25、设有向图有n个顶点和e条边,采用领接表作为其存储表示,在进行拓扑排序时,总的计算时间为( )。( ) AO(nlog2e) BO(n+e) CO(ne) DO(n2)标准答案:B26、队列操作的原则是( )。( ) A先进先出 B后进先出 C只能进行插入 D只能进行删除标准答案:A27、在稀疏矩阵的带行指针向量的链接存储中,每个行单链表中的结点都具有相同的( )。( ) A行号 B列号 C元素值 D地址标准答案:A28、线性链表不具有的特点是( )。( ) A随机访问 B不必事先估计所需存储空间大小 C插入与删除时不必移动元素 D所需空间与线性表长度成正比标准答案:A29、组成数据结构的基本单位是( )。( ) A数据项 B数据类型 C数据元素 D数据变量标准答案:C30、设循环队列Q1.N-1的头尾指针为F,R,当插入元素时尾指针R加1,头指针F总是指在队列中第一个元素的前一个位置,则队列中元素计数为( )。( ) AR-F BN-(R-F) C(R-F+N)%N D(F-R+N)%N标准答案:C31、在一个无向图中,所有顶点的度数之和等于所有边数的( )倍。( ) A3 B2 C1 D1/2标准答案:B32、若线性表最常用的操作是存取第i个元素及其前趋的值,则采用( )存储方式节省时间。( ) A单链表 B双链表 C单循环链表 D顺序表标准答案:D33、若待排序对象序列在排序前已按其排序码递增顺序排序,则采用( )方法比较次数最少。( ) A直接插入排序 B快速排序 C归并排序 D直接选择排序标准答案:A34、下面程序段的时间复杂度为( )。 for(int i=0; i<m; i+) for(int j=0; j<n; j+) aij=i*j;( ) AO(m2) BO(n2) CO(m*n) DO(m+n)标准答案:C35、在一个单链表中,若q所指结点是p所指结点的前驱结点,若在q与p之间插入一个s所指的结点,则执行( )。( ) Aslink=plink;plink=s; Bplink=s;slink=q; Cplink=slink;slink=p; Dqlink=s;slink =p;标准答案:D36、算法分析的两个主要方面是( )。( ) A空间复杂度和时间复杂度 B正确性和简明性 C可读性和文档性 D数据复杂性和程序复杂性标准答案:A37、在一个长度为n的顺序存储线性表中,删除第i个元素(1in+1)时,需要从前向后依次前移( )个元素。( ) An-i Bn-i+1 Cn-i-1 Di标准答案:A38、如果结点A有3个兄弟,而且B为A的双亲,则B的度为( )。( ) A1 B3 C4 D5标准答案:A39、设有两个串(S1和S2),求S1在S2中首次出现的位置的运算称为( )。( ) A连接 B模式匹配 C求子串 D求串长标准答案:B40、下面算法的时间复杂度为( )。 int f( unsigned int n ) if ( n=0 | n=1 ) return 1; else return n*f(n-1); AO(1) BO(n) CO(n2) DO(n!)标准答案:B41、每一个存储节点只含有一个数据元素,数据元素按散列函数确定存储位置的存储方式是( )。( ) A顺序存储 B链式存储 C索引存储 D散列存储标准答案:D42、具有2000个节点的二叉树,其高度至少为( )。( ) A9 B10 C11 D12标准答案:C43、算法分析的目的是( )。( ) A找出数据结构的合理性 B研究算法中的输入和输出的关系 C分析算法的效率以求改进 D分析算法的易读性和文档性标准答案:C44、判定一个顺序栈(最多元素为m个)为空的条件是( )。( ) Atop0 Btopm Ctop!0 Dtop!m标准答案:A45、若让元素1,2,3依次进栈,则出栈次序不可能出现( )种情况。( ) A3,2,1 B2,1,3 C3,1,2 D1,3,2标准答案:C46、当利用大小为N的一维数组顺序存储一个栈时,假定用top=N表示栈空,则向这个栈插入一个元素时,首先应执行( )语句修改top指针。( ) Atop+ Btop- Ctop=0 Dtop标准答案:B47、在一个长度为n的顺序存储的线性表中,向第i个元素(1in+1)之前插入一个新元素时,需要从后向前依次后移( )个元素。( ) An-i Bn-i+1 Cn-i-1 Di标准答案:C48、设字符串S1='ABCDEFG',S2='PQRST',则运算S=CONCAT(SUB(S1,2,LENGTH(S2),SUB(S1,LENGTH(S2),2)后结果为( )。( ) ABCQR' B'BCDEF' C'BCDEFG' D'BCDEFEF'标准答案:D49、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主的存储,a11为第一个元素,其存储地址为1,每个元素占1个地址空间,则a85的地址为( )。( ) A13 B18 C33 D40标准答案:C50、线性表的链接实现有利于( )运算。( ) A插入 B读表元 C查找 D定位标准答案:A51、设有广义表D(a,b,D),其深度为( )。( ) A B3 C2 D5标准答案:A52、串的逻辑结构与( )的逻辑结构不同。( ) A线性表 B栈 C队列 D树标准答案:D53、下列那种排序需要的附加存储开销最大( )。( ) A快速排序 B堆排序 C归并排序 D插入排序标准答案:C54、设一数列的顺序为1,2,3,4,5,6,通过栈结构不可能排成的顺序数列为( )。( ) A3,2,5,6,4,1 B1,5,4,6,2,3 C2,4,3,5,1,6 D4,5,3,6,2,1标准答案:B55、栈的插入和删除操作在( )进行。( ) A栈顶 B栈底 C任意位置 D指定位置标准答案:A56、某二叉树的先序序列和后序序列正好相反,则该二叉树一定是( )的二叉树。( ) A空或只有一个结点 B高度等于其结点数 C任一结点无左孩子 D任一结点无右孩子标准答案:B57、在用邻接表表示图的情况下,建立图的算法的时间复杂度是( )。( ) AO(n+e) BO(n2) CO(n×e) DO(n3)标准答案:A58、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( )。( ) Aedcba Bdecba Cabcde Ddceab标准答案:D59、线性表采用链式存储时,其地址( )。( ) A必须是连续的 B部分地址必须是连续的 C一定是不连续的 D连续与否均可以标准答案:D60、二叉树第i层上至多有( )结点。( ) A2i B2i C2i-1 D2i-1标准答案:C61、在一个循环顺序队列中,队首指针指向队首元素的( )位置。( ) A前一个 B后一个 C当前 D后面标准答案:A62、如果以链表作为栈的存储结构,则退栈操作时( )。( ) A必须判别栈是否满 B对栈不作任何判别 C必须判别栈是否空 D判别栈元素的类型标准答案:C63、组成数据结构的基本单位是( )。( ) A数据项 B数据类型 C数据元素 D数据变量标准答案:C64、设单链表中指针p指着结点A,若要删除A之后的结点(若存在),则需要修改指针操作为( )。( ) Ap->next=p->next->next Bp=p->next Cp=p->next->next Dp->next=p标准答案:A65、栈的插入与删除操作在( )进行。( ) A栈顶 B栈底 C任意位置 D指定位置标准答案:A66、广义表(a),其表头是( )。( ) Aa B(a) C() D(a)标准答案:B67、线索化二叉树中某结点D,没有左孩子的主要条件是( )。( ) AD->Lchild=Null BD->ltag=1 CD->Rchild=Null DD->ltag=0标准答案:B68、在有n个叶子结点的哈夫曼树中,其结点总数为( )。( ) A不确定 B2n C2n+1 D2n-1标准答案:D69、从一个循环顺序队列删除元素时,首先需要( )。( ) A前移一位队首指针 B后移一位队首指针 C取出队首指针所指位置上的元素 D取出队尾指针所指位置上的元素标准答案:B70、Substr('DATA STRUCTURE',5,9)=( )。( ) ASTRUCTURE' B'ASTUCTUR' C'DATA STRUCTRUE'标准答案:A71、二分查找要求被查找的表是( )。( ) A键值有序的链接表 B链接表但键值不一定有序 C键值有序的顺序表 D顺序表但键值不一定有序标准答案:C二、填空题(本大题共48小题,每小题2分,共96分)72、数据的存储结构被分为顺序结构、链接结构、_、散列结构四种。标准答案:索引结构73、数据的存储结构被分为顺序结构、链接结构、索引结构、_四种。标准答案:散列结构74、在双向链表中每个结点包含有两个指针域,一个指向其_结点,另一个指向其_结点。标准答案:前驱;后继75、在一个图中,所有顶点的度数之和等于所有边数的_倍。标准答案:276、对于一棵具有n个结点的树,该树中所有结点的度数之和为_。标准答案:n-177、假定一棵树的广义表表示为A(B(C(D,E),F,G(H,I,J),K),则度为3的结点数为_个。标准答案:278、一个算法应具备的5个特性为_、确定性、可行性、输入、输出。标准答案:有穷性79、一个算法应具备的5个特性为有穷性、_、可行性、输入、输出。标准答案:确定性80、以二分查找方法从长度为12的有序表中查找一个元素时,平均查找长度为_。标准答案:37/1281、对于线性表(18,25,63,50,42,32,90)进行散列存储时,若选用H(K)=K % 9作为散列函数,则散列地址为0的元素有_个,散列地址为5的元素有_个。标准答案:3;282、数据的存储结构被分为顺序结构、_、索引结构、散列结构四种。标准答案:链接结构83、对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小为_。标准答案:n*n84、在双向循环链表中,在指针p所指的结点之后插入指针f所指的结点,其操作为_。标准答案:(1)f->next=p->next; (2)p->next->prior=f; (3)f->prior=p; (4)p->next=f;85、对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_,在表尾插入元素的时间复杂度为_。标准答案:O(n);O(1)86、中缀表达示3+X*(2.4/5-6)所对应的后缀表达示为_。标准答案:3 x 2.4 5 6 *87、假定一棵树的广义表表示为A(B(C(D,E),F,G(H,I,J),K),则度为0的结点数为_个。标准答案:788、对于线性表(18,25,63,50,41,32,90,66)进行散列存储时,若选用H(K)=K%11作为散列函数,则散列地址为3的元素有_个,散列地址为8的元素有_个。标准答案:1;289、中缀算术表达式3+4/(25-(6+15)*8 所对应的后缀算术表达式为_。标准答案:3 4 25 6 15 + - / 8 * +90、快速排序在平均情况下的时间复杂度为_,在最坏情况下的时间复杂度为_。标准答案:O(nlog2n);O(n2)91、前序序列和中序序列相同的二叉树为_。标准答案:单右枝二叉树或孤立结点92、每次从无序表中顺序取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做_排序。标准答案:插入93、一个n*n的对称矩阵,如果以行或列为主序存入内存,则其容量为_。标准答案:n(n+1)/294、后缀表达式“2 10 + 5 * 6 9 / ”的值为_。标准答案:695、对于一棵二叉树,若一个结点的编号为i,则它的左孩子结点的编号为_,右孩子结点的编号为_。标准答案:2i;2i+196、假定一棵二叉树的结点数为18,则它的最小深度为_,最大深度为_。标准答案:5;1897、从一个栈删除元素时,首先取出_。标准答案:栈顶元素98、在线性表的_存储中,对每一个元素只能采用顺序查找。标准答案:链接99、一棵深度为5的满二叉树中的结点数为_个。标准答案:31100、一个算法应具备的5个特性为有穷性、确定性、_、输入、输出。标准答案:可行性101、在线性表的单链接存储结构中,每个结点包含有两个域,一个叫_域,另一个叫_域。标准答案:元素值;指针102、当从一个小根堆中删除一个元素时,需要把堆尾元素填补到_位置,然后再按条件把它逐层_调整。标准答案:堆顶;向下103、假定一棵树的广义表表示为A(B(C(D,E),F,G(H,I,J),K),则度为2的结点数为_个。标准答案:2104、从有序表(12,18,30,43,56,78,82,95)中依次二分查找43和56元素时,其查找长度分别为_和_。标准答案:1;3105、在散列表(Hash)查找中,评判一个散列函数优劣的两个主要条件是:_和_。标准答案:值均匀分布于表空间以减少冲突;函数尽可能简单以方便计算106、后缀算术表达式24 8 + 3 * 4 10 7 - * / 所对应的中缀算术表达式为_,其值为_。标准答案:(24+8)*3/(4*(10-7) ;8107、在一个单链表HL 中,若要向表头插入一个由指针p指向的结点,则应执行语句:_。标准答案:p->next=HL;HL=p;108、假定一组记录的排序码为(46,79,56,38,40,80,25,34),在对其进行快速排序的过程中,进行第一次划分后得到的排序码序列为 _。标准答案:(40,34,25,38,46,80,56,79)109、对于线性表(18,25,63,50,41,32,90,66)进行散列存储时,若选用H(K)=K%11作为散列函数,则散列地址为0的元素有_个散列地址为8的元素有_个。标准答案:1;2110、若对一棵二叉树的结点编号从0开始顺序编码,按顺序存储,把编号为0的结点存储到a0中,其余类推,则ai元素的左孩子元素为_,右孩子元素为_。标准答案:2i+1;2i+2111、在一个具有n个顶点的无向完全图中,包含有_条边,在一个具有n个顶点的有向完全图中,包含有_条边。标准答案:n(n-1)/2;n(n-1)112、在一棵高度为h的3叉树中,最多含有_结点。标准答案:(3h-1)/2113、对于一个顺序实现的共享栈S1n,栈顶指针分别为top1和top2,top1由小到大,top2由大到小,其判断下溢的条件是_;判断上溢的条件是_。标准答案:top1=0或top2=n+1;top1+1=top2114、在循环双向链表中表头结点的左指针域指向_结点,最后一个结点的右指针域指向_结点。标准答案:表尾;表头115、每次从无序表中挑选出一个最大或最小元素,把它交换到有序表中的一端,此种排序方法叫做_排序。标准答案:选择116、对于一个以顺序实现的循环队列Q0.m-1,队头、队尾指针分别为f,r,其判空的条件是_,判满的条件是_。标准答案:r=f;(r+1)%m=f117、假定一棵树的广义表表示为A(B(C(D,E),F,G(H,I,J),K),则度为1的结点数为_个。标准答案:0118、在一棵树中,_没有前驱结点。标准答案:树概结点119、以二分查找方法查找一个线性表时,此线性表必须是_存储的_表。标准答案:顺序;有序三、简答题(本大题共20小题,每小题10分,共200分)120、已知一棵二叉树的中序遍历结果为DBHEAFICG,前序遍历结果为ABDEHCFIG,请画出该二叉树。标准答案:121、(2.80)标准答案:122、对于结点类型为Lnode的单链表,以下算法的功能为:_。void BB( LNode *& HL)LNode *p=HL; HL=NULL;while (p!=NULL)LNode *q=p;p=p->next;q->next=HL;HL=q;标准答案:将一个单链表按逆序链接。123、下面递归算法的功能是_。 void unknown(ListNode *f,Type &x) /指针f 是带表头结点的单链表的表头指针,数值x是给定值。ListNode * temp; if (f->link!=NULL) while(f->linkàdata=x) temp= f->link; f->link= temp->link ;delete temp; unknown(f->link , x);标准答案:在单链表中删除所有值为x的结点。124、以下为向以BST为树根指针的二叉搜索树上插入值为item的结点的递归算法。请在横线处将程序补充完整。 Void Insert(BtreeNode*&BST,const ElemType&item) if(BST=NULL) BTreeNode* p=new BTreeNode; p->date=item; _; BST=p;else if(item<BST->date) _;else_;(2.80)标准答案:p->left=p->right=NULLInsert(BST->left,item)Insert(BST->right,item)125、设有顺序表中的元素依次为017,094,154,170,275,503,512,553,612,677,765,897,908。试画出对其进行折半搜索时做性能分析用的扩充二叉搜索树(判定树),并计算搜索成功时的平均搜索长度(ASLsucc)和搜索不成功进的平均搜索长度(ASLunsucc)。标准答案:126、下列算法执行后得到的线性表La为:_。void BB(List &La)InitList(La);int a=78,26,56,27,34,42;for(i=0; i<3; i+)InsertFront(La,ai);for(i=3; i<6; i+)InsertRear(La,ai);TraverseList(La);标准答案:(56,26,78,27,34,42)127、以上算法的功能为:_。void BB(List &L)int i=0;while (i<L.size)int j=i+1;while (j<L.size)if(L.listj = =L.list)for (int k=j+1;k<L.size;k+)L.listk-1=L.listk;L.size-;else j+;i+;标准答案:删除线性表中所有重复的元素。128、执行下面函数调用后得到的输出结果是_。void AF(Queue & Q) InitQueue(Q); int a4 = 5,8,12,15 ; for ( int i=0; i<4; i+ ) QInsert(Q,ai); QInsert(Q,QDelete(Q); QInsert(Q,30); QInsert(Q,QDelete(Q)+10); while ( ! QueueEmpty(Q) ) cout<<QDelete(Q)<<' '标准答案:12 15 5 30 18129、标准答案:130、对于结点类型为LNode的单链表,以下算法的功能为:_。void AA (LNode * HL,const ElemType & item) LNode * newptr=new Lnode ; newptr->data=item; LNode *p=HL; while ( p->next!=HL ) p=p->next;newptr->next=HL;p->next=newptr;标准答案:向单链表的末尾添加一个元素。131、标准答案:(3,4)5,(0,1)8,(4,5)9,(4,7)10,(2,4)14,(1,3)15,(4,6)31132、已知一棵二叉树的前序遍历的结果序列是ABECKFGHIJ,中序遍历的结果是EBCDAFHIGJ,试写出这棵二叉树的后序遍历结果。标准答案:EDCBIHJGFA133、以下算法用于实现“计算二叉数的的深度”。请在空白处填写语句,将程序补充完整。int BtreeDepth (BTreeNode *BT)if (BT= =NULL)return 0;elseint dep1,dep2;dep1=_;dep2=_;if (dep1>dep2)_;return_;标准答案:BtreeDepth(BT->left)BtreeDepth(BT->right)return rep1+1rep2+1134、假定一个待散列存储的线性表为 (37,65,25,73,42,91,45,36,18,75), 散列地址空间为HT12,若采用除留余数法构造散列函数和链接法处理冲突,试求出每一元素的散列地址,画出最后得到的散列表,求出平均查找长度。标准答案:135、假定调用以下算法时栈 S 中已有2个元素(23,16),其中23是栈底。则调用后得到的栈内容为(从栈底开始排列):_void CC( Stack &S)Pop(S);Push(S,50);Push(S,45);Peek(S);标准答案:23,50,45136、对于结点类型为LNode的单链表,以下算法的功能为:_int AA(LNode *HL , ElemType x) int n=0; LNode *p=HL;while (p!=NULL) if (p->data= =x) n+; p=p->next;return n;标准答案:统计单链表中结点的值等于给定值x的结点数137、以下算法的功能是_,一般称之为_算法。void DD(ElemType A,int n)ElemType x;int i,j,flag;for(i=1;i<n-1;i+)flag=0;for(j=n-1;j>=i;j-) if (Aj.stn<Aj-1.stn) x=Aj; Aj=Aj-1; Aj-1=x; flag=1; if (flag=0) retu