数据结构习题及解答第1章概述习题1一、单项选择题1.数据结构是指(1.A)。A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(2.C)。A.存储结构B.逻辑结构C.链式存储结构D.顺序存储结构3.树形结构是数据元素之间存在一种(3.D)。A.一对一关系B.多对多关系C.多对一关系D.一对多关系4.设语句x++的时间是单位时间,则以下语句的时间复杂度为(4.B)。for(i=1;i=n;i++)for(j=i;j=n;j++)x++;A.O(1)B.O(2n)C.O(n)D.O(3n)7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要(7.B)。A.低B.高C.相同D.不好说8.数据结构作为一门独立的课程出现是在(8.D)年。A.1946B.1953C.1964D.19689.数据结构只是研究数据的逻辑结构和物理结构,这种观点(9.B)。A.正确B.错误C.前半句对,后半句错D.前半句错,后半句对10.计算机内部数据处理的基本单位是(10.B)。A.数据B.数据元素C.数据项D.数据库二、填空题1.数据结构按逻辑结构可分为两大类,分别是______________和_________________。1.线性结构,非线性结构2.数据的逻辑结构有四种基本形态,分别是________________、__________________、__________________和__________________。2.集合,线性,树,图3.线性结构反映结点间的逻辑关系是__________________的,非线性结构反映结点间的逻辑关系是__________________的。3.一对一,一对多或多对多4.一个算法的效率可分为__________________效率和__________________效率。4.时间,空间5.在树型结构中,树根结点没有__________________结点,其余每个结点的有且只有__________________个前趋驱结点;叶子结点没有__________________结点;其余每个结点的后续结点可以__________________。5.前趋,一,后继,多6.在图型结构中,每个结点的前趋结点数和后续结点数可以__________________。6.有多个7.线性结构中元素之间存在__________________关系;树型结构中元素之间存在__________________关系;图型结构中元素之间存在__________________关系。7.一对一,一对多,多对多8.下面程序段的时间复杂度是__________________。8.O(2n)for(i=0;in;i++)for(j=0;jn;j++)A[i][j]=0;9.下面程序段的时间复杂度是__________________。9.O(n)i=s=0;while(sn){i++;s+=i;}10.下面程序段的时间复杂度是__________________。10.O(2n)s=0;for(i=0;in;i++)for(j=0;jn;j++)s+=B[i][j];sum=s;11.下面程序段的时间复杂度是__________________。11.O(log3n)i=1;while(i=n)i=i*3;12.衡量算法正确性的标准通常是__________________________。12.程序对于精心设计的典型合法数据输入能得出符合要求的结果。13.算法时间复杂度的分析通常有两种方法,即___________和___________的方法,通常我们对算法求时间复杂度时,采用后一种方法。13.事后统计,事前估计三、求下列程序段的时间复杂度。1.x=0;for(i=1;in;i++)for(j=i+1;j=n;j++)x++;1.O(2n)2.x=0;for(i=1;in;i++)for(j=1;j=n-i;j++)x++;2.O(2n)3.inti,j,k;for(i=0;in;i++)for(j=0;j=n;j++){c[i][j]=0;for(k=0;kn;k++)c[i][j]=a[i][k]*b[k][j]}3.O(n3)4.i=n-1;while((i=0)&&A[i]!=k))j--;return(i);4.O(n)5.fact(n){if(n=1)return(1);elsereturn(n*fact(n-1));}5.O(n)第2章线性表习题2一、单项选择题1.线性表是________。1.AA.一个有限序列,可以为空B.一个有限序列,不可以为空C.一个无限序列,可以为空D.一个无限序列,不可以为空2.在一个长度为n的顺序表中删除第i个元素(0=i=n)时,需向前移动个元素。2.AA.n-iB.n-i+lC.n-i-1D.i3.线性表采用链式存储时,其地址________。3.DA.必须是连续的B.一定是不连续的C.部分地址必须是连续的D.连续与否均可以4.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较________个元素结点。4.CA.n/2B.nC.(n+1)/2D.(n-1)/25.在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是____。5.DA.p-next=s;s-prior=p;p-next-prior=s;s-next=p-next;B.s-prior=p;s-next=p-next;p-next=s;p-next-prior=s;C.p-next=s;p-next-prior=s;s-prior=p;s-next=p-next;D.s-prior=p;s-next=p-next;p-next-prior=s;p-next=s;6.设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为________。6.AA.p-next=p-next-next;B.p=p-next;C.p=p-next-next;D.p-next=p;7.在一个长度为n的顺序表中向第i个元素(0in+l)之前插入一个新元素时,需向后移动______个元素。7.BA.n-iB.n-i+lC.n-i-1D.i8.在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行8.BA.s-next=p-next;p-next=sB.q-next=s;s-next=pC.p-next=s-next;s-next=pD.p-next=s;s-next=q9.以下关于线性表的说法不正确的是______。9.CA.线性表中的数据元素可以是数字、字符、记录等不同类型。B.线性表中包含的数据元素个数不是任意的。C.线性表中的每个结点都有且只有一个直接前趋和直接后继。D.存在这样的线性表:表中各结点都没有直接前趋和直接后继。10.线性表的顺序存储结构是一种_______的存储结构。10.AA.随机存取B.顺序存取C.索引存取D.散列存取11.在顺序表中,只要知道_______,就可在相同时间内求出任一结点的存储地址。11.DA.基地址B.结点大小C.向量大小D.基地址和结点大小12.在等概率情况下,顺序表的插入操作要移动______结点。12.BA.全部B.一半C.三分之一D.四分之一13.在______运算中,使用顺序表比链表好。13.CA.插入B.删除C.根据序号查找D.根据元素值查找14.在一个具有n个结点的有序单链表中插入一个新结点并保持该表有序的时间复杂度是_______。14.BA.O(1)B.O(n)C.O(n2)D.O(log2n)15.设有一个栈,元素的进栈次序为A,B,C,D,E,下列是不可能的出栈序列__________。15.CA.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A16.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为______。16.CA.top不变B.top=0C.top--D.top++17.向一个栈顶指针为hs的链栈中插入一个s结点时,应执行______。17.BA.hs-next=s;B.s-next=hs;hs=s;C.s-next=hs-next;hs-next=s;D.s-next=hs;hs=hs-next;18.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为________。18.DA.rear%n==frontB.(front+l)%n==rearC.rear%n-1==frontD.(rear+l)%n==front19.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队空的条件为________。19.CA.rear%n==frontB.front+l=rearC.rear==frontD.(rear+l)%n=front20.在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为________。20.AA.front=front-nextB.rear=rear-nextC.rear=front-nextD.front=rear-next二、填空题1.线性表是一种典型的_________结构。1.线性2.在一个长度为n的顺序表的第i个元素之前插入一个元素,需要后移____个元素。2.n-i+13.顺序表中逻辑上相邻的元素的物理位置________。3.相邻4.要从一个顺序表删除一个元素时,被删除元素之后的所有元素均需_______一个位置,移动过程是从_______向_______依次移动每一个元素。4.前移,前,后5.在线性表的顺序存储中,元素之间的逻辑关系是通过_______决定的;在线性表的链接存储中,元素之间的逻辑关系是通过_______决定的。5.物理存储位置,链域的指针值6.在双向链表中,每个结点含有两个指针域,一个指向_______结点,另一个指向_______结点。6.前趋,后继7.当对一个线性表经常进行存取操作,而很少进行插入和删除操作时,则采用_______存储结构为宜。相反,当经常进行的是插入和删除操作时,则采用_______存储结构为宜。7.顺序,链接8.顺序表中逻辑上相邻的元素,物理位置_______相邻,单链表中逻辑上相邻的元素,物理位置_______相邻。8.一定,不一定9.线性表、栈和队列都是_______结构,可以在线性表的______位置插入和删除元素;对于栈只能在_______位置插入和删除元素;对于队列只能在_______位置插入元素和在_______位置删除元素。9.线性,任何,栈顶,队尾,队头10.根据线性表的链式存储结构中每个结点所含指针的个数,链表可分为_________和_______;而根据指针的联接方式,链表又可分为________和_________10.单链表,双链表,非循环链表,循环链表11.在单链表中设置头结点的作用是________。11.使空表和非空表统一;算法处理一致12.对于一个具有n个结点的单链表,在已知的结点p后插入一个新结点的时间复杂度为______,在给定值为x的结点后插入一个新结点的时间复杂度为_______。12.O(1),O(n)13.对于一个栈作进栈运算时,应先判别栈是否为_______,作退栈运算时,应先判别栈是否为_______,当栈中元素为m时,作进栈运算时发生上溢,则说明栈的可用最大容量为_______。为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一