•数据结构第一章•一、填空题•1.数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。•2.数据结构被形式地定义为(D,R),其中D是数据元素的有限集合,R是D上的关系有限集合。•3.数据结构包括数据的逻辑结构、数据的存储结构、和数据的运算这三个方面的内容。•4.数据结构按逻辑结构可分为两大类,它们分别是线性结构和非线性结构。•5.线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。•6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个结点有且只有1个后续结点。•7.在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。•8.在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。•9.数据的存储结构可用四种基本的存储方法表示,它们分别是顺序、链式、索引和散列。•10.数据的运算最常用的有5种,它们分别是插入、删除、修改、查找、排序。•11.一个算法的效率可分为时间效率•和空间效率。•二、单项选择题•(B)1.非线性结构是数据元素之间存在一种:•A)一对多关系B)多对多关系•C)多对一关系D)一对一关系•(C)2.数据结构中,与所使用的计算机无关的是数据的结构;•A)存储B)物理•C)逻辑D)物理和存储•(C)3.算法分析的目的是:•A)找出数据结构的合理性•B)研究算法中的输入和输出的关系•C)分析算法的效率以求改进•D)分析算法的易懂性和文档性•(A)4.算法分析的两个主要方面是:•A)空间复杂性和时间复杂性•B)正确性和简明性•C)可读性和文档性•D)数据复杂性和程序复杂性•(C)5.计算机算法指的是:•A)计算方法•B)排序方法•C)解决问题的有限运算序列•D)调度方法•(B)6.计算机算法必须具备输入、输出和等5个特性。•A)可行性、可移植性和可扩充性•B)可行性、确定性和有穷性•C)确定性、有穷性和稳定性•D)易读性、稳定性和安全性•三、简答题•1.数据结构和数据类型两个概念之间有区别吗?答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素。数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。•2.简述线性结构与非线性结构的不同点。•答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的。•3.算法的定义和特性。•算法是解决特定问题的有限指令序列。特性:有限性、确定性、可行性、有0个或多个输入数据、有1个或多个输出结果。•4.数据结构的逻辑结构有哪四类?•集合结构、线性结构、树形结构、图形结构•线性结构的前驱与后继之间为一对一关系,非线性结构的前驱与后继之间通常为一对多或多对多关系。第二章线性表习题•1顺序表中逻辑上相邻的元素的物理位置相邻。•单链表中逻辑上相邻的元素的物理位置相邻。•一定•不一定•2在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。•3.线性表中结点间的关系是一对一的。判断题•()1.链表的每个结点中都恰好包含一个指针。•答:错误。链表中的结点可含多个指针域,分别存放多个指针。例如,双向链表中的结点可以含有两个指针域,分别存放指向其直接前趋和直接后继结点的指针。•()2.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。•错,链表的结点不会移动,只是指针内容改变。•()3.线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。•错,混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。•()4.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。•错,正好说反了。顺序表才适合随机存取,链表恰恰适于“顺藤摸瓜”•()5.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。•错,前一半正确,但后一半说法错误,那是链式存储的优点。•顺序存储方式插入、删除运算效率较低,在表长为n的顺序表中,插入和删除一个数据元素,平均需移动表长一半个数的数据元素。•()8.线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。•错误。线性表有两种存储方式,在顺序存储时,逻辑上相邻的元素在存储的物理位置次序上也相邻。单项选择题()1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:•(A)存储结构•(B)逻辑结构•(C)顺序存储结构•(D)链式存储结构•C•()2.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是•(A)110•(B)108•(C)100•(D)120•B•()5.链接存储的存储结构所占存储空间:•A分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针•B只有一部分,存放结点值•C只有一部分,存储表示结点间关系的指针•D分两部分,一部分存放结点值,另一部分存放结点所占单元数••A•()6.链表是一种采用存储结构存储的线性表;•(A)顺序•(B)链式•(C)星式•(D)网状•B•()7.线性表若采用链式存储结构时,要求内存中可用存储单元的地址:•(A)必须是连续的•(B)部分地址必须是连续的•(C)一定是不连续的•(D)连续或不连续都可以•D•()8.线性表在情况下适用于使用链式结构实现。•(A)需经常修改线性表中的结点值(B)需不断对线性表进行删除插入•(C)线性表中含有大量的结点•(D)线性表中结点结构复杂•B•()10.设a1、a2、a3为3个结点,整数P0,3,4代表地址,则如下的链式存储结构称为•(A)循环链表•(B)单链表•(C)双向循环链表•(D)双向链表•B简答题•1.【严题集2.3②】试比较顺序存储结构和链式存储结构的优缺点。•在什么情况下用顺序表比链表好?•答:①顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。•优点:存储空间利用率高。•缺点:插入或删除元素时不方便。•②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针•优点:插入或删除元素时很方便,使用灵活。•缺点:存储空间利用率低。•顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。•若线性表的长度变化不大,且其主要操作是查找,则采用顺序表;•若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。•第三章•1.向量(线性表)、栈和队列都是结构,可以在向量的位置插入和删除元素;对于栈只能在插入和删除元素;对于队列只能在插入和删除元素。•1、向量、栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。•2.栈是一种特殊的线性表,允许插入和删除运算的一端称为。不允许插入和删除运算的一端称为。•2.栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。不允许插入和删除运算的一端称为栈底。•3.是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。•3.队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。•二、判断正误(判断下列概念的正确性,并作出简要的说明。)•()1.线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。••二、判断正误(判断下列概念的正确性,并作出简要的说明。)•(×)1.线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。•错,线性表是逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。•()2.在表结构中最常用的是线性表,栈和队列不太常用。•(×)2.在表结构中最常用的是线性表,栈和队列不太常用。•错,不一定吧?调用子程序或函数常用,CPU中也用队列。•()3.栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。•(√)3.栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。•()6.栈和队列是一种非线性数据结构。•(×)6.栈和队列是一种非线性数据结构。•错,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。•()7.栈和队列的存储方式既可是顺序方式,也可是链接方式。•(√)7.栈和队列的存储方式既可是顺序方式,也可是链接方式。•()8.队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。•(×)8.队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。•错,后半句不对。•()9.一个栈的输入序列是12345,则栈的输出序列不可能是12345。•(×)9.一个栈的输入序列是12345,则栈的输出序列不可能是12345。•错,有可能。•三、单项选择题•()1.栈中元素的进出原则是•A.先进先出B.后进先出•C.栈空则进D.栈满则出••三、单项选择题•(B)1.栈中元素的进出原则是•A.先进先出B.后进先出•C.栈空则进D.栈满则出•6.【初程P71】从供选择的答案中,选出应填入下面叙述内的最确切的解答,把相应编号写在答卷的对应栏内。•设有4个数据元素a1、a2、a3和a4,对他们分别进行栈操作或队操作。在进栈或进队操作时,按a1、a2、a3、a4次序每次进入一个元素。假设栈或队的初始状态都是空。•现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈得到的元素是A,第二次出栈得到的元素是B是;•类似地,考虑对这四个数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队得到的元素是C,第二次出队得到的元素是D。经操作后,最后在栈中或队中的元素还有E个。•供选择的答案:•A~D:①a1②a2③a3④a4•E:①1②2③3④0•答:ABCDE=2,4,1,2,2第五章•1.假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为;末尾元素A57的第一个字节地址为;若按行存储时,元素A14的第一个字节地址为;若按列存储时,元素A47的第一个字节地址为。•1.假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为288B;末尾元素A57的第一个字节地址为1282;若按行存储时,元素A14的第一个字节地址为(8+4)×6+1000=1072;若按列存储时,元素A47的第一个字节地址为(6×7+4)×6+1000)=1276。•(注:数组是从0行0列还是从1行1列计算起呢?由末单元为A57可知,是从0行0列开始!)•2.三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素•的、和。•2.三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素•的行下标、列下标和元素值。•5.用三元组表表示下列稀疏矩阵:2000000000000005000000000006000000000000030008000000000000000000)1(000003000000000500000000000009200000)2(•解:三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。588521325843667570266405-2149325543•6下列各三元组表分别表示一个稀疏矩阵,试写出它们的稀疏矩阵。455001139218246327•6答:为4×5矩阵,非零元素有5个10000000900800600700•第