一、选择题(共30分)1.数据结构是一门研究非数值计算的程序设计问题中的计算机操作的(B)和以及它们之间存在的(D)和操作的学科。(1)A.数据映像B.数据元素C.逻辑存储D.计算方法(2)A.结构B.运算C.算法D.关系2.在数据结构中,从逻辑上可以将数据结构分为:(C)。A.动态结构和表态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构3.线性表的逻辑顺序和存储顺序总是一致的,这种说法(B)。A.正确B.不正确4.算法分析的目的是(C),算法分析的两个主要方面是(A)。(1)A.找了数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性(2)A.空间复杂度和时间复杂度B.正确性C.可读性和文档性D.数据复杂性和程序复杂性5.带头结点的单链表head为空的判定条件是(B)。A.head=NULLB.head-next=NULLC.head-next=headD.head!=NULL6.非空的循环单链表head的尾结点p应该满足(C)。A.p-next=NULLB.p=NULLC.p-next=headD.p=head7.在一个单链表中,删除p所指的结点的后继结点,则执行语句(A)。A.p-next=p-next-next;B.p=p-next;p-next=p-next-next;C.p-next=p-next;D.p=p-next-next;8.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D)。A.必须连续B.部分地址必须是连续的C.一定是不连续的D.连续或不连续都可以9.对顺序存储的线性表,设其表长为n,且在任何位置插入或删除操作都是等概率的,则插入一个元素平均要移动表中(B)个元素。A.n/2B.(n+1)/2C.(n-1)/2D.n10.与单链表相比,双链表的优点之一是(D)A.插入删除操作更容易B.可以进行随机访问C.可以省略头结点指针D.顺序访问相邻结点更灵活11.栈的特点是(B)。插入操作在(C)进行,删除操作在(C)进行。(1)A.先进先出B.先进后出C.在栈顶D.在栈底D.栈顶或栈底E.随机位置12.一个栈的进栈次序为a,b,c,d,e,则栈不可能的出栈序列是(C)。A.edcbaB.decbaC.dceabD.abcde13.若已知一个栈的进栈序列为1,2,3,4…n,其出栈序列为p1,p2,p3,…pn,若有p1=n,则pi(1=in)一定为(C)。A.iB.nC.n-i+1D.不确定14.已知一棵完全二叉树中共有768个结点,则该树中共有(B)个叶子结点。A.383B.384C.385D.38615.先序遍历和中序遍历相同的二叉树为(D)。A.只有根结点的二叉树B.根结点无左孩子的二叉树C.一般二叉树D.只有根结点的二叉树和所有结点只有右子树的二叉树16.一个有n个顶点的无向图最多有(C)条边。A.nB.n(n-1)C.n(n-1)/2D.2n17.(B)的邻接矩阵是对称矩阵。A.有向图B.无向图C.AOV图18.邻接表是图的(B)。A.顺序存储结构B.链式存储结构C.索引存储结构D.散列存储结构19.对线性表进行二分查找时,要求线性表必须(C)。A.以顺序方式存储B.以链接方式存储C.以顺序方式存储且结点按关键字有序排列D.以链接方式存储且结点按关键字有序排列20.采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为(C)。A.nB.n/2C.(n+1)/2D.(n-1)/221.有一个有序序列(1,2,3,4,5,6),当用二分法进行查找值为4的结点时,经过(C)次比较后查找成功。A.1B.2C.3D.422.二叉树的第i层最多有(C)个结点。A.2iB.2iC.2i-1D.2i-123.在一个图中,所有顶点的度数之和等于所有边数的(C)倍。A.1/2B.1C.2D.424.一个无向连通图(B)最小生成树。A.只有一棵B.一棵或多棵C.一定有多棵D.不一定有25.一个图的(B)表示法是唯一的,而(C)表示法是不唯一的。A.三元组B.邻接矩阵C.邻接表D.索引二、选择题(每空1分,共30分)1.线性结构中元素之间存在的关系,树形结构中的元素之间存在的关系,图形结构中的元素之间存在的关系。2.算法的五个特点是:,,,,。3.栈是限定仅在表尾进行操作的线性结构。表头一端称为,表尾的一端称为。4.队列是限定仅在表尾进行和在表头进行的线性表,其特点是:。5.如有如下顺序栈的定义#defineMAXSIZE500Typedefstruct{chardata[MAXSIZE];inttop;}sqstack;sqstackss;则栈空的条件是,栈满的条件是,栈顶元素的表达式是,栈底元素的表达式是。6.在一个长度为n的向量的第i个元素(1=i=n)之前插入一个元素时,需向后移动的元素个数数为。7.在双链表中,每个结点都有两个指针域,一个指向,另一个指向。8.数据的逻辑结构包括,,,四种类型;其中和统称为非线性结构。9.数据的存储结构分为和。其中要求逻辑上相邻的元素物理上也相邻的存储方式为。三、简答题(每小题6分,共30分)1.下列程序段的时间复杂度是O(mn)。for(i=0;in;i++)for(j=0;jm;j++)a[i][j]=0;2.设将整数1,2,3,4依次进栈,只要出栈时栈非空,则可将出栈操作按任何次序插入到进栈操作之间,请问若进栈、出栈的次序为:push(1),pop()、push(2)、push(3)、pop()、pop()、push(4)、pop(),则出栈的数字序列是:1324。3.已知二叉树的后序遍历和中序遍历序列如下,构造该二叉树,并写出它的先序遍历序列。后序:DEBFGCA中序:DBEAFCG答案:先序:ABDECFG4.如图所示的有向图,试给出其拓扑排序:936415287。5.设有一组关键字(10,20,14,17,19,23,27,15,40,38,35,37),采用哈希函数H(key)=key%13采用开放地址法的线性探测再散列方法解决冲突,试在[0-12]的散列地址空间中对该关键字序列构造哈希表。四、判断题(每小题1分,共5分)1.线性表的顺序存储结构要比链式存储结构节省空间。()2.N个元素进栈的次序一定与它们出栈的顺序相反。()3.在非空二叉树中,只有最下面一层的结点为叶子结点。()4.在一个n个顶点的无向图中,要连通全部顶点至少需要n-1条边。()5.二叉树的遍历方法有先序、中序和后序三种。()五、编程(共5分)有如下二叉树的链式存储结构定义:typedefstructnode316942875{intdata;structnode*rchild,lchild;}BITNode,*BiTree;请完善先序遍历函数。voidPreOrder(BiTreeroot){}一、单选题(每题2分,共20分)1.1.对一个算法的评价,不包括如下(B)方面的内容。A.健壮性和可读性B.并行性C.正确性D.时空复杂度2.2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行(A)。A.p-next=HL-next;HL-next=p;B.p-next=HL;HL=p;C.p-next=HL;p=HL;D.HL=p;p-next=HL;3.3.对线性表,在下列哪种情况下应当采用链表表示?(B)A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.4.一个栈的输入序列为123,则下列序列中不可能是栈的输出序列的是(C)A.231B.321C.312D.1235.5.AOV网是一种(D)。A.有向图B.无向图C.无向无环图D.有向无环图6.6.采用开放定址法处理散列表的冲突时,其平均查找长度(B)。A.低于链接法处理冲突B.高于链接法处理冲突C.与链接法处理冲突相同D.高于二分查找7.7.若需要利用形参直接访问实参时,应将形参变量说明为(D)参数。A.值B.函数C.指针D.引用8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的(A)。A.行号B.列号C.元素值D.非零元素个数9.9.快速排序在最坏情况下的时间复杂度为(D)。A.O(log2n)B.O(nlog2n)C.0(n)D.0(n2)10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为(C)。A.O(n)B.O(1)C.O(log2n)D.O(n2)二、二、运算题(每题6分,共24分)1.1.数据结构是指数据及其相互之间的联系。当结点之间存在M对N(M:N)的联系时,称这种结构为_图_。2.2.队列的插入操作是在队列的_尾_进行,删除操作是在队列的__首进行。3.3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是___top==0___(要超出才为满)_。4.4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为O(1)_,在表尾插入元素的时间复杂度为O(n__。5.5.设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7,列下标j从0到3,则二维数组W的数据元素共占用128_个字节。W中第6行的元素和第4列的元素共占用_44_个字节。若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为108_。6.6.广义表A=(a,(a,b),((a,b),c)),则它的深度为__3___,它的长度为_3___。7.7.二叉树是指度为2的_有序__树。一棵结点数为N的二叉树,其所有结点的度的总和是_n-1__。8.8.对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个有序序列_。对一棵由算术表达式组成的二叉语法树进行后序遍历得到的结点序列是该算术表达式的___后缀表达式_。9.9.对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数为_2n_个,其中n-1_个用于指向孩子_n+1个指针是空闲的。10.10.若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺序存储到一维数组A中,即编号为0的结点存储到A[0]中。其余类推,则A[i]元素的左孩子元素为2i+1_,右孩子元素为_2i+2__,双亲元素为___(i-1)/2。11.11.在线性表的散列存储中,处理冲突的常用方法有____开放定址法____和_链接法_两种。12.12.当待排序的记录数较大,排序码较随机且对稳定性不作要求时,宜采用_______________排序;当待排序的记录数较大,存储空间允许且要求排序是稳定时,宜采用________________________排序。三、三、运算题(每题6分,共24分)1.1.已知一个65稀疏矩阵如下所示,007000000520000000100000010000试:(1)(1)写出它的三元组线性表;(2)(2)给出三元组线性表的顺序存储表示。2.2.设有一个输入数据的序列是{46,25,78,62,12,80},试画出从空树起,逐个输入各个数据而生成的二叉搜索树。四、四、阅读算法(每题7分,共14分)1.1.intPrime(intn){inti=1;intx=(int)sqrt(n);while(++i=x)if(n%i==0)break;if(ix)return1;elsereturn0;}(1)(1)指出该算法的功能;(2)(2)该算法的时间复杂度是多少?2.2.写出下述算法的功能:voidAJ(adjlistGL,inti,intn){QueueQ;InitQueue(Q);couti'';visited[i]=true;QInsert(Q,i);while(!QueueEmpty(Q)){intk=QDelete(Q);edgenode*p=GL[k];while(p!=NULL)