1第1章绪论一、判断题1.数据的逻辑结构与数据元素本身的内容和形式无关。(√)2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(√)3.数据元素是数据的最小单位。(×)4.数据的逻辑结构和数据的存储结构是相同的。(×)5.程序和算法原则上没有区别,所以在讨论数据结构时可以通用。(×)6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。(√)7.数据的存储结构是数据的逻辑结构的存储映象。(√)8.数据的物理结构是指数据在计算机内实际的存储形式。(√)9.数据的逻辑结构是依赖于计算机的。(×)10.算法是对解题方法和步骤的描述。(√)二、填空题1.数据有逻辑结构和存储结构两种结构。2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。4.树形结构和图形结构合称为非线性结构。5.在树形结构中,除了树根结点以外,其余每个结点只有1个前驱结点。6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。7.数据的存储结构又叫物理结构。8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。9.线性结构中的元素之间存在一对一的关系。10.树形结构中的元素之间存在一对多的关系。11.图形结构的元素之间存在多对多的关系。12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)3个方面的内容。13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系有限集合。14.算法是一个有穷指令的集合。15.算法效率的度量可以分为事先估算法和事后统计法。16.一个算法的时间复杂度是算法输入规模的函数。17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模的n的函数。18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O(nlog2n)。19.若一个算法的语句频度之和为T(n)=3n+nlog2+n2,则算法的时间复杂度为O(n2)。20.数据结构是一门研究非数值计算的程序问题中计算机的操作对象,以及它们之间的关系和运算的学科。三、选择题1.数据结构通常是研究数据的(A)及它们之间的相互关系。A.存储结构和逻辑结构B.存储和抽象C.联系和抽象D.联系与逻辑2.在逻辑上可以把数据结构分成(C)。A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构。3.数据在计算机存储内表示时,物理地址和逻辑地址相同并且是连续的,称之为(C)。A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构4.非线性结构中的每个结点(D)。A.无直接前驱结点.B.无直接后继结点.2C.只有一个直接前驱结点和一个直接后继结点D.可能有多个直接前驱结点和多个直接后继结点5.链式存储结构所占存储空间(A)。A.分两部分,一部分存放结点的值,另一个部分存放表示结点间关系的指针。B.只有一部分,存放结点的值。C.只有一部分,存储表示结点间关系的指针。D.分两部分,一部分存放结点的值,另一部分存放结点所占单元素6.算法的计算量大小称为算法的(C)。A.现实性B.难度C.时间复杂性D.效率7.数据的基本单位(B)。A.数据结构B.数据元素C.数据项D.文件8.每个结点只含有一个数据元素,所有存储结点相继存放在一个连续的存储空间里,这种存储结构称为(A)结构。A.顺序结构B.链式结构C.索引结构D.散列结构9.每一个存储结点不仅含有一个数据元素,还包含一组指针,该存储方式是(B)。A.顺序B.链式C.索引D.散列10.以下任何两个结点之间都没有逻辑关系的是(D)。A.图形结构B.线性结构C.树形结构D.集合11.在数据结构中,与所使用的计算机无关的是(C)。A.物理结构B.存储结构C.逻辑结构D.逻辑和存储结构12.下列4种基本逻辑结构中,数据元素之间关系最弱的是(A)。A.集合B.线性结构C.树形结构D.图形结构13.与数据元素本身的形式、内容、相对位置、个数无关的是数据的(A)。A.逻辑结构B.存储结构C.逻辑实现D.存储实现14.每一个存储结点只含有一个数据元素,存储结点存放在连续的存储空间,另外有一组指明结点存储位置的表,该存储方式是(C)存储方式。A.顺序B.链式C.索引D.散列15.算法能正确的实现预定功能的特性称为算法的(A)。A.正确性B.易读性C.健壮性D.高效性16.算法在发生非法操作时可以作出相应处理的特性称为算法的(C)。A.正确性B.易读性C.健壮性D.高效性17.下列时间复杂度中最坏的是(D)。A.O(1)B.O(n)C.O(log2n)D.O(n2)18.下列算法的时间复杂度是(D)。for(i=0;in;i++)for(j=o;in;j++)c[i][j]=i+j;A.O(1)B.O(n)C.(log2n)D.O(n2)19.算法分析的两个主要方面是(A)。A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性20.计算机算法必须具备输入、输出和(C)。A.计算方法B.排序方法C.解决问题的有限运算步骤D.程序设计方法3第2章线性表一、判断题1.线性表的链式存储结构优于顺序存储。(×)2.链表的每个结点都恰好包含一个指针域。(×)3.在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。(√)4.顺序存储方式的优点是存储密度大,插入、删除效率高。(×)5.线性链表的删除算法简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。(×)6.顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。(×)7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。(√)8.线性表采用顺序存储,必须占用一片连续的存储单元。(√)9.顺序表结构适宜进行顺序存取,而链表适宜进行随机存取。(×)10.插入和删除操作是数据结构中是最基本的两种操作,所以这两种操作在数组中也经常使用。(×)二、填空题1.顺序表中逻辑上相邻的元素在物理位置上必须相邻。2.线性表中结点的集合是有限的,结点间的关系是一对一关系。3.顺序表相对于链表的优点是节省存储和随机存取。4.链表相对于顺序表的优点是插入、删除方便。5.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快速度存取线性表中的元素时,应采用顺序存储结构。6.顺序表中访问任意一个结点的时间复杂度均为O(1)。7.链表相对于顺序表的优点是插入、删除方便;缺点是存储密度小。8.在双向链表中要删除已知结点*P,其时间复杂度为O(1)。9.在单向链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前驱结点的地址,其查找的时间复杂度为O(n)。10.在单向链表中需知道头指针才能遍历整个链表。11.线性表中第一个结点没有直接前驱,称为开始结点。12.在一个长度为n的顺序表中删除第i个元素,要移动n-i个元素。13.在一个长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移n-i+1个元素。14.在无头结点的单向链表中,第一个结点的地址存放在头指针中,而其他结点的存储地址存放在前趋结点的指针域中。15.线性表的元素总数不确定,且经常需要进行插入和删除操作,应采用链子存储结构。16.在线性表中的链式存储中,元素之间的逻辑关系是通过指针决定。17.在双向链表中,每个结点都有两个指针域,它们一个指向其前趋结点,另一个指向其后继结点。18.对一个需要经常进行插入和删除操作的线性表,采用链式存储结构为宜。19.双向链表中,设P是指向其中待删除的结点,则需要执行的操作为p-prior-next=p-next;p-next-prior=p-prior20.在如图所示的链表中,若在指针P所在的结点之后插入数据域值为a和b的两个结点,则可用语句S-next-next=p-next和P-next=S;来实现该操作。4p∧abs三、选择题1.在具有n个结点的单向链表中,实现(A)的操作,其算法的时间复杂度都是O(n).A.遍历链表或求链表的第i个结点B.在地址为P的结点之后插入一个结点C.删除开始结点D.删除地址为P的结点的后继结点2.设a、b、c为3个结点,p、10、20分别代表它们的地址,则如下的存储结构称为(B)。pa10b20c∧A.循环链表B.单向链表C.双向循环链表D.双向链表3.单向链表的存储密度(C)。A.大于1B.等于1C.小于1D.不能确定4.已知一个顺序存储的线性表,设每个结点占m个存储单元,若第一个结点的地址为B,则第i个结点的地址为(A)。A.B+(i-1)×mB.B+i×mC.B-i×mD.B+(i+1)×m5.在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为(B)。A.O(1)B.O(n)C.O(n2)D.O(log2n)6.设front、rear分别为循环双向链表结点的左指针和右指针,则指针P所指的元素是双循环链表L的尾元素的条件是(D)。A.P==LB.P-front==LC.P==NULLD.P-rear==L7.两个指针P和Q,分别指向单向链表的两个元素,P所指元素是Q所指元素前驱的条件是(B)A.P-next==Q-nextB.P-next==QC.Q-next==PD.P==Q8.用链表存储的线性表,其优点是(C)。A.便于随机存取B.花费的存储空间比顺序表少C.便于插入和删除D.数据元素的物理顺序与逻辑顺序相同9.在单链表中,增加头结点的目的是(C)。A.使单链表至少有一个结点B.标志表中首结点的位置C.方便运算的实现D.说明该单链表是线性表的链式存储结构10.下面关于线性表的叙述中,错误的是(D)关系。A.顺序表必须占一片地址连续的存储单元B.顺序表可以随机存取任一元素C.链表不必占用一片地址连续的存储单元D.链表可以随机存取任一元素11.L是线性表,已知LengthList(L)的值是5,经DelList(L,2)运算后,LengthList(L)的值是(C)。A.2B.3C.4D.512.单向链表的示意图如下:LABCD∧PQR5指向链表Q结点的前驱的指针是(B)。A.LB.PC.QD.R13.设p为指向单循环链表上某结点的指针,则*p的直接前驱(C)。A.找不到B.查找时间复杂度为O(1)C.查找时间复杂度为O(n)D.查找结点的次数约为n14.等概率情况下,在有n个结点的顺序表上做插入结点运算,需平均移动结点的数目为(8)。A.nB.(n-1)/2C.n/2D.(n+1)/215.在下列链表中不能从当前结点出发访问到其余各结点的是(C)。A.双向链表B.单循环链表C.单向链表D.双向循环链表16.在顺序表中,只要知道(D),就可以求出任一结点的存储地址。A.基地址B.结点大小C.向量大小D.基地址和结点大小17.在双向链表中做插入运算的时间复杂度为(A)。A.O(1)B.O(n)C.O(n2)D.O(log2n)18.链表不具备的特点是(A)。A.随机访问B.不必事先估计存储空间C.插入删除时不需要移动元素D.所需空间与线性表成正比19.以下关于线性表的论述,不正确的为(C)。A.线性表中的元素可以是数字、字符、记录等不同类型B.线性顺序表中包含的元素个数不是任意的C.线性表中的每个结点都有且仅有一个直接前驱和一个直接后继D.存在这样的线性表,即表中没有任何结点20.在(B)的运算中,使用顺序表比链表好。A.插入B.根据序号查找C.删除D.根据元素查找6第3章栈一、判断题1.栈是运算受限制的线性表。(√)2.在栈空的情况下,不能作出栈操作,否则产生下溢。(√)3.栈一定是顺序存储的线性结构。(×)4.栈的特点是“后进先出”。(√)5.空栈就是所有元素都为0的栈。(×)6.在C(或C++)语言中设顺序栈的长度为MAXLEN,则top=MAXLEN时表示栈满。(×)7.链栈与顺序栈相比,其特点之一是通常不会出现栈满的情