数据结构练习题 第二章 线性表 习题及答案 下载本文

内容发布更新时间 : 2024/11/16 14:39:46星期一 下面是文章的全部内容请认真阅读。

2.线性结构中的一个结点代表一个 ( ) ① 数据元素 ② 数据项 ③ 数据 ④ 数据结构

3.顺序表的一个存储结点仅仅存储线性表的一个 ( ) ① 数据元素 ② 数据项 ③ 数据 ④ 数据结构 4.顺序表是线性表的 ( ) ①链式存储结构 ②顺序存储结构 ③ 索引存储结构 ④ 散列存储结构 5.对于顺序表,以下说法错误的是 ( )

①顺序表是用一维数组实现的线性表,数组的下标可以看成是元素的绝对地址 ②顺序表的所有存储结点按相应数据元素间的逻辑关系决定的次序依次排列 ③顺序表的特点是:逻辑结构中相邻的结点在存储结构中仍相邻

④顺序表的特点是:逻辑上相邻的元素,存储在物理位置也相邻的单元中

6.对顺序表上的插入、删除算法的时间复杂性分析来说,通常以( )为标准操作 ①条件判断 ②结点移动 ③算术表达式 ④赋值语句

7.对于顺序表的优缺点,以下说法错误的是 ( ) ①无需为表示结点间的逻辑关系而增加额外的存储空间

②可以方便地随机存取表中的任一结点 ③插人和删除运算较方便

④由于顺序表要求占用连续的空间,存储分配只能预先进行(静态分配) ⑤容易造成一部分空间长期闲置而得不到充分利用

8.指针的全部作用就是 ( ) ①指向某常量 ② 指向某变量 ③指向某结点 ④存储某数据

9.除了( ) ,其它任何指针都不能在算法中作为常量出现,也无法显示。 ①头指针 ②尾指针

③指针型变量 ④空指针

10.单链表表示法的基本思想是指针P表示结点间的逻辑关系,则以下说法错误的是( ) ①任何指针都不能用打印语句输出一个指针型变量的值

②如果要引用(如访问)p所指结点,只需写出p(以后跟域名)即可

③若想修改变量p的值(比如让P指向另一个结点),则应直接对p赋值

④对于一个指针型变量P的值。只需知道它指的是哪个结点

⑤结点*p是由两个域组成的记录,p->data是一个数据元素,p->next的值是一个指针 11.单链表的一个存储结点包含 ( ) ①数据域或指针域 ②指针域或链域 ③指针域和链域 ④数据域和链域

12.对于单链表表示法,以下说法错误的是 ( ) ①数据域用于存储线性表的一个数据元素

②指针域或链域用于存放一个指向本结点所含数据元素的直接后继所在结点的指针 ③所有数据通过指针的链接而组织成单链表

④NULL称为空指针,它不指向任何结点,只起标志作用

13.对于单链表表示法,以下说法错误的是 ( ) ①指向链表的第一个结点的指针,称为头指针

5

②单链表的每一个结点都被一个指针所指

③任何结点只能通过指向它的指针才能引用 ④终端结点的指针域就为NULL

⑤尾指针变量具标识单链表的作用,故常用尾指针变量来命名单链表

14.有时为了叙述方便,可以对一些概念进行简称,以下说法错误的是 ( ) ①将“指针型变量”简称为“指针” ②将“头指针变量”称为“头指针”

③将“修改某指针型变量的值”称为“修改某指针” ④将“p中指针所指结点”称为“P值”

15.设指针P指向双链表的某一结点,则双链表结构的对称性可用( )式来刻画 ① p->prior->next->==p->next->next ② p->prior->prior->==p->next->prior ③ p->prior->next->==p->next->prior ④ p->next->next==p->prior->prior

16.以下说法错误的是 ( )

①对循环链表来说,从表中任一结点出发都能通过前后操作而扫描整个循环链表 ②对单链表来说,只有从头结点开始才能扫描表中全部结点 ③双链表的特点是找结点的前趋和后继都很容易

④对双链表来说,结点*P的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针域中。

17.在循环链表中,将头指针改设为尾指针(rear)后,其头结点和尾结点的存储位置分别是 ( )

①real和rear->next->next ②rear->next 和real

③rear->next->next和rear ④rear和rear->next 18.以下说错误的是 ( )

①对于线性表来说,定位运算在顺序表和单链表上的量级均为O(n)

②读表元运算在顺序表上只需常数时间O(1)便可实现,因此顺序表是一种随机存取结构 ③在链表上实现读表元运算的平均时间复杂性为O(1)

④链入、摘除操作在链表上的实现可在O(1)时间内完成

⑤链入、摘除操作在顺序表上的实现,平均时间复杂性为O(n) 19.在串的基本运算中,属于加工型运算的有 ( )

①EQAL(S,T) ②LENGTH(S) ③CONCAT(S,T) ④REPLACE(S,T,R) ⑤INDEX(S,T) 20. 在串的基本运算中,属于引用型运算的有 ( )

①ASSIGN(S,T) ②INSERT(S1,i,S2)

③DELETE(S,i,j) ④SUBSTR(S,i,j) ⑤REPLACE(S,T,R) 21.循环链表主要优点是 ( )

①不再需要头指针了

②已知某个结点的位置后,能够容易找到它的直接前趋

③在进行插入、删除运算时,能更好地保证链表不断开 ④从表中任一结点出发都能扫描到整个链表

22,每种数据结构都具备三个基本操作:插入、删除和查找,这种说法 ( )

6

①正确 ②错误

23.以下说法错误的是 ( )

①数据的物理结构是指数据在计算机内实际的存储形式 ②算法和程序没有区别,所以在数据结构中二者是通用的 ③对链表进行插人和删除操作时,不必移动结点 ④双链表中至多只有一个结点的后继指针为空 24.以下说法正确的是

①线性结构的基本特征是:每个结点有且仅有一个直接前趋和一个直接后继

②线性表的各种基本运算在顺序存储结构上的实现均比在链式存储结构上的实现效率要

③在线性表的顺序存储结构中,插人和删除元素时,移动元素的个数与该元素位置有关 ④顺序存储的线性表的插人和删除操作不需要付出很大的代价,因为平均每次操只有近一半的元素需要移动

25.以下说法错误的是 ( )

①求表长、定位这二种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低

②顺序存储的线性表可以随机存取

③由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活 ④线性表的链式存储结构优于顺序存储结构

26.以下说法错误的是 ( )

①线性表的元素可以是各种各样的,逻辑上相邻的元素在物理位置上不一定相邻 ②在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻 ③在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻

④线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素 27.以下说法正确的是( )

①在单链表中,任何两个元素的存储位置之间都有固定的联系,因为可以从头结点进行查找任何一个元素

②在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构

③顺序存储结构属于静态结构,链式结构属于动态结构 ④顺序存储方式只能用于存储线性结构 28.以下说法正确的是( )

①顺序存储方式的优点是存储密度大、且插入、删除运算效率高 ②链表的每个结点中都恰好包含一个指针

③线性表的顺序存储结构优于链式存储结构

④顺序存储结构属于静态结构,链式结构属于动态结构 29.下面关于线性表的叙述正确的是( )

①线性表采用顺序存储,必须占用一片连续的存储单元 ②线性表采用顺序存储,便于进行插人和删除操作 ③线性表采用链接存储,不必占用一片连续的存储单元 ④线性表采用链接存储,不便于插人和删除操作 30.线性表L=(a1,a2,...,ai,...,an),下列说法正确的是( )

①每个元素都有一个直接前驱和直接后继 ②线性表中至少要有一个元素

7

③表中诸元素的排列顺序必须是由小到大或由大到小的

④除第一个元素和最后一个元素外其余每个元素都有一个且仅有一个直接前驱和直接后继

31.线性表的逻辑顺序与存储顺序总是一致的,这种说法( )

①正确 ②不正确 32.设p,q是指针,若p=q,则*p=*q ,这种说法( )

①正确 ②不正确

33.线性表若采用链表存储结构时,要求内存中可用存储单元的地址( )

①必需是联系的 ②部分地址必须是连续的

③一定是不连续的 ④连续不连续都可以

34.设REAR是指向非空带头结点的循环单链表的尾指针,则删除表首结点的操作可表示为( )

①p=rear; ②rear=rear->next; rear=rear->next; free(rear); free(p)

③rear=rear->next->next; ④ p=rear->next->next; free(rear); rear->next->next=p->next;

free(p); 35. 单链表中,增加头结点的目的是为了 ( )

①使单链表至少有一个结点 ②标示表结点中首结点的位置

③方便运算的实现 ④说明单链表是线性表的链式存储实现

36线性结构中的一个结点代表一个数据元素,通常要求同一线性结构的所有结点所代表的数据元素具有相同的特性,这意味着

① 每个结点所代表的数据元素都一样。

② 每个结点所代表的数据元素包含的数据项的个数要相等

③ 不仅数据元素包含的数据项的个数要相同,而且对应数据项的类型要一致 ④ 结点所代表的数据元素有同一特点

37.带头结点的单链表Head为空的判定条件是

①Head=Null ②Head->next=NULL ③Head->next=Head 38.非空的单循环链表L的尾结点*P,满足

P->next=NULL P=NULL P->next=L P=L. 39.双向链表结点结构如下:

LLink data RLink 其中:LLink是指向前驱结点的指针域:

data是存放数据元素的数据域; Rlink是指向后继结点的指针域。

下面给出的算法段是要把一个新结点*Q作为非空双向链表中的结点*p的前驱,插入到此双向链表中。不能正确完成要求的算法段是

①Q->LLink=P->LLink; ②P->LLink=Q; Q->Rlink=P; Q->Rlink=P;

P->LLink=Q; P->LLink->Rlink=Q; P->LLink->Rlink=Q; Q->LLink=P->LLink; ③Q->LLink=P->LLink; Q->Rlink=P;

8