第二章数据结构概述一、选择题1.在数据结构中,从逻辑上可以把数据结构分为( C )。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.线性表的顺序存储结构是一种( A )的存储结构。
A.随机存取B.顺序存取C.索引存取D.Hash存取3.计算机算法指的是( C ),它必须具备输入、输出和( B )等五个特征。
(1) A.计算方法B.排序方法C.解决某一问题的有限运算序列D.调度方法(2) A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性,有穷性和稳定性D.易读性、稳定性和安全性4.线性表若采用链表存储结构,要求内存中可用存储单元的地址( D )。
A.必须是连续的B.部分必须是连续的C.一定是不连续的D.连续不连续都可以5.根据数据元素之间关系的不同特性,以下四类基本的逻辑结构反映了四类基本的数据组织形式,其中解释错误的是( A )。
A.集合中任何两个结点之间都有逻辑关系但组织形式松散B.线性结构中结点按逻辑关系依次排列形成一条“锁链”C.树形结构具有分支、层次特性,其形态有点像自然界中的树D.图状结构中的各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接二、判断题×1.数据元素是数据的最小单位。
√2.数据结构是带有结构的数据元素的集合。
√3.数据结构、数据元素、数据项在计算机中的映像分别称为存储结构、结点、数据域。
×4.数据项是数据的基本单位。
√5.数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用需要建立的。
√6.数据的物理结构是数据在计算机中实际的存储形式。
×7.算法和程序没有区别,所以在数据结构中二者是通用的。
三、填空题1.所谓数据的逻辑结构指的是数据元素之间的____逻辑关系_____。
2,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面的内容______数据的逻辑结构、数据的存储结构、对数据施加的操作_。
3.数据的逻辑结构包括__集合结构___、_____线性结构___、____树型结构_____和__图状结构_____四种类型。
4.在线性结构中,开始结点_____没有______前驱结点,其余每个结点有且只有_____一个______个前驱结点。
5.算法的五个重要特性是__可行性___、___确定性___、___有穷性___、___输入__、___输出__。
6.下列程序段的时间复杂度是_____O(n)____。
for (i=1;i<=n;i++) A[i,i]=0;7.存储结构是逻辑结构的_____物理______实现。
8.从数据结构的观点看,通常所说的“数据”应分成三个不同的层次,即__数据__、__数据元素_和__数据项___。
9.一个算法的时空性能是指该算法的__时间复杂度___和___空间复杂度_,前者是算法包含的____计算量______,后者是算法需要的___存储量_______。
四、应用题1.分析下列程序段的时间复杂度。
……i=1;WHILE (i<=n) i=i*2;……答:2.简述下列术语:数据,数据元素,数据结构,数据对象。
答:3.逻辑结构与存储结构是什么关系?答:第三章线性表一、选择题1.线性结构中的一个结点代表一个( )。
A.数据元素B.数据项C.数据D.数据结构2.线性表L=(a1,a2,…,ai,…,an),下列说法正确的是( )。
A.每个元素都有一个直接前驱和直接后继B.线性表中至少要有一个元素C.表中诸元素的排列顺序必须是由小到大或由大到小的D.除第一个元素和最后一个元素外其余每个元素都有一个且仅有一个直接前驱和直接后继3.顺序表是线性表的( )。
A.链式存储结构B.顺序存储结构C.索引存储结构D.散列存储结构4.对于顺序表,以下说法错误的是( )。
A.顺序表是用一维数组实现的线性表,数组的下标可以看成是元素的绝对地址B.顺序表的所有存储结点按相应数据元素间的逻辑关系决定的次序依次排列C.顺序表的特点是:逻辑结构中相邻的结点在存储结构中仍相邻D.顺序表的特点是:逻辑上相邻的元素,存储在物理位置也相邻的单元中5.对顺序表上的插入、删除算法的时间复杂度分析来说,通常以( )为标准操作。
A.条件判断B.结点移动C.算术表达式D.赋值语句6.对于顺序表的优缺点,以下说法错误的是( )。
A.无需为表示结点间的逻辑关系而增加额外的存储空间B.可以方便地随机存取表中的任一结点C.插入和删除操作较方便D.由于顺序表要求占用连续的空间,存储分配只能预先进行(静态分配)7.在含有n个结点的顺序存储的线性表中,在任一结点前插入一个结点所需移动结点的平均次数为( )。
A.n B.n/2 C.(n-1)/2 D.(n+1)/28.在含有n个结点的顺序存储的线性表中,删除一个结点所需移动结点的平均次数为( )。
A.n B.n/2 C.(n-1)/2 D.(n+1)/29.不带头结点的单链表head为空的条件是( )。
A.head=NULL B.head->next=NULL C.head->next=head D.head!=NULL 10.带头结点的单链表head为空的条件是( )。
A.head=NULL B.head->next=NULL C.head->next=head D.head!=NULL 11. 在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q和*p之间插入结点*s,则执行( )。
A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;C.q->next=s; s->next=p;D.p->next=s; s->next=q;12. 在一个单链表中,若*p结点不是最后结点。
在*p之后插入结点*s,则执行( )。
A.s->next=p;p->next=s; B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;D.p->next=s;s->next=p;13. 若某线性表中最常用的操作是取第i个元素和找第i个元素的前驱元素,则采用( )存储方式最节省时间。
A.顺序表 B. 单链表C.双链表D.单循环链表14.在一个单链表中,若删除*p结点的后继结点,则执行( )。
A.q=p->next;p->next=q->next;free(q);B.p=p->next;p->next=p->next->next;free(p);C.p->next=p->next;free(p->next);D.p=p->next->next;free(p->next);15.循环链表的主要优点是( )。
A.不再需要头指针了B.已知某个结点的位置后,容易找到它的直接前驱C.在进行插入、删除操作时,能更好地保证链表不断开D.从表中任一结点出发都能扫描到整个链表16.在线性表的下列存储结构中,读取元素花费时间最少的是( )。
A.单链表B.双链表C.循环链表D.顺序表二、判断题( )1.顺序存储的线性表可以随机存取。
( )2.顺序存储的线性表的插入和删除操作不需要付出很大的代价,因为平均每次操作只有近一半的元素需要移动。
( )3.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此是属于同一数据对象。
( )4.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻。
( )5.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
( )6.在单链表中,可以从头结点开始查找任何一个元素。
( )7.线性表的链式存储结构优于顺序存储结构。
( )8.在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素的位置有关。
( )9.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。
( )10.顺序存储方式只能用于存储线性结构。
三、填空题1.为了便于讨论,有时将含n(n>0)个结点的线性结构表示成(a1,a2,…,an),其中每个ai代表一个___________。
a1称为___________结点,an称为___________结点,i称为ai在线性表中的___________。
对任意一对相邻结点a i、a i+1(1≤i<n),ai称为ai+1的直接___________,ai+1称为ai的直接____________。
2.线性结构的基本特征是:若至少含有一个结点,则除起始结点没有直接___________外,其他结点有且仅有一个直接___________;除终端结点没有直接___________外,其他结点有且仅有一个直接____________。
3.所有结点按一对一的邻接关系构成的整体就是___________结构。
4.线性表的逻辑结构是___________结构,其所含结点的个数称为线性表的___________。
5.在单链表中,删除p所指结点的直接后继的操作是___________;___________;___________.6.对于一个具有n个结点的单链表,在p所指结点后插入一个结点的时间复杂度为___________,在给定值为x的结点后插入新结点的时间复杂度为___________。
7.单链表表示法的基本思想是用___________表示结点间的逻辑关系。
8.在顺序表中插入或删除一个元素,平均需要移动___________元素,具体移动的元素个数与___________有关。
9.在单链表中,若p和s是两个指针,且满足p->next与s相同,则语句p->next=s->next的作用是___________s指向的结点。
10.在单链表中,指针p所指结点为最后一个结点的条件是___________。
11.思考题:在单链表中,若要在p所指结点之前插入s所指的结点,可进行下列操作:s->next=___________;p->next=s;temp=p->data;p->data=___________;s->data=____________;四、应用题1.描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。
答:2.何时选用顺序表,何时选用链表作为线性表的存储结构为宜?答:3.在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素?答:4.如果有n个线性表同时共存,并且在处理过程中各表的长度会发生动态变化,线性表的总长度也会自动地改变。