• 沒有找到結果。

通过对多项式加法的介绍,我们可以将其推广到实现两个多项式的相乘,因为乘法可以 分解为一系列的加法运算。

习题 2

一、选择题

1.下述______是顺序存储结构的优点。

A.存储密度大 B.插入运算方便

C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示

2.下面关于线性表的叙述中,______是错误的。

A.线性表采用顺序存储,必须占用一片连续的存储单元 B.线性表采用顺序存储,便于进行插入和删除操作 C.线性表采用链式存储,不必占用一片连续的存储单元 D.线性表采用链式存储,便于插入和删除操作

3.线性表是具有 n 个______的有限序列(n>0)。

A.表元素 B.字符 C.数据元素

D.数据项 E.信息项

4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用______

存储方式最节省时间。

A.顺序表 B.双链表

C.带头结点的双循环链表 D.单循环链表

5.若线性表中有 n 个元素,算法______在单链表上实现要比在顺序表上实现效率更高。

A.删除所有值为 x 的元素 B.在最后一个元素的后面插入一个新元素

C.顺序输出前 k 个元素 D.交换其中某两个元素的值

6.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用______存

储方式最节省运算时间。

A.单链表 B.仅有头指针的单循环链表

C.双链表 D.仅有尾指针的单循环链表

7.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用______最节省时间。

A.单链表 B.单循环链表

C.带尾指针的单循环链表 D.带头结点的双循环链表

8.静态链表中指针表示的是______。

A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址

9.链表不具有的特点是______。

A.插入、删除不需要移动元素 B.可随机访问任一元素

C.不必事先估计存储空间 D.所需空间与线性长度成正比

10.若长度为 n 的线性表采用顺序存储结构,在其第 i 个位置插入一个新元素的算法的时间复杂度为 ______(1≤i≤n+1)。

A.O(0) B.O(1) C.O(n) D.O(n2)

11.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度分别为______。

A.O(n) O(n) B.O(n) O(1) C.O(1) O(n) D.O(1) O(1) 12.线性表(a1,a2,

,an)以链式方式存储时,访问第 i 位置元素的时间复杂度为______。

A.O(i) B.O(1) C.O(n) D.O(i-1)

13.非空的循环单链表 head(头指针)的尾结点指针 p 满足______。

A.p->next==head B.p->next==NULL

C.p==NULL D.p==head

14.在一个单链表中,已知指针 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;

15.在一个单链表中,若删除指针 p 所指结点的后续结点,则执行______。

A.p->next=p->next->next; B.p=p->next;p->next=p->next->next;

C.p->next=p->next D.p=p->next->next

16.在双向链表指针 p 所指的结点前插入指针 s 所指的新结点的操作为______。

A.p->prior=s;s->next=p;p->prior->next=s;s->prior=p->prior;

B.p->prior=s;p->prior->next=s;s->next=p;s->prior=p->prior;

C.s->next=p;s->prior=p->prior;p->prior=s;p->prior->next=s;

D.s->next=p;s->prior=p->prior;p->prior->next=s;p->prior=s;

二、判断题

1.链表中的头结点仅起到标识的作用。 ( )

2.顺序存储结构的主要缺点是不利于插入或删除操作。 ( )

3.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。 ( )

4.顺序存储方式插入和删除结点时效率太低,因此它不如链式存储方式好。 ( )

5.对任何数据结构,链式存储结构一定优于顺序存储结构。 ( )

6.顺序存储方式只能用于存储线性结构。 ( )

7.集合与线性表的区别在于是否按关键字排序。 ( )

8.所谓静态链表就是一直不发生变化的链表。 ( )

9.线性表的特点是每个元素都有一个前驱和一个后继。 ( )

10.取得线性表的第 i 个元素的时间同 i 的大小有关。 ( )

11.线性表只能用顺序存储结构实现。 ( )

12.线性表就是顺序存储的表。 ( )

13.为了很方便的插入和删除数据,可以使用双向链表存放数据。 ( )

14.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 ( )

15.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。

( ) 三、填空题

1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的 元素时,应采用______存储结构。

2.线性表 L=(a1,a2,

,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移 动元素的个数是______。

3.设单链表的结点结构为(data,next),next 为指针域,已知指针 px 指向单链表中 data 为 x 的结点,指 针 py 指向 data 为 y 的新结点,若将结点 y 插入结点 x 之后,则需要执行以下语句______、______。

4.在一个长度为 n 的顺序表中第 i 个元素(1≤i≤n)之前插入一个元素时,需向后移动______个元素。

5.在单链表中设置头结点的作用是______。

6.对于一个具有 n 个结点的单链表,在已知的结点*p 后插入一个新结点的时间复杂度为______,在给 定值为 x 的结点后插入一个新结点的时间复杂度为______。

7.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成______和______;根据 指针的连接方式,链表又可分成______和______。

8.在双向循环链表中,向 p 所指的结点后插入指针 f 所指的结点,其操作是______、______、______、

______。

9.链式存储的特点是利用______来表示数据元素之间的逻辑关系。

10.顺序存储结构是通过______表示元素之间的关系的;链式存储结构是通过______表示元素之间的 关系的。

11.对于双向链表,在两个结点之间插入一个新结点需修改的指针共______个,单链表为______个。

12.循环单链表的最大优点是______。

13.已知指针 p 指向单链表 L 中的某结点,则删除其后继结点的语句是______、______、______。

14.带头结点的双循环链表 L 为空表的条件是______。

四、编程题

1.已知两个顺序表 La 和 Lb 中的元素递增有序,试利用顺序表的基本操作实现将 La 与 Lb 合并为一个 新的顺序表 Lc,且 Lc 中的元素亦递增有序。

2.已知一个顺序表 L 中的元素递增有序,编写一个算法,将元素 e 插入到顺序表中,且插入 e 后该表 仍保持递增有序。

3.已知一个顺序表 L 中的数据元素为整数类型,编写一个算法,将该表中的所有奇数排在偶数之前,

即表的前面为奇数,后面为偶数。

4.编写一个算法,实现顺序表就地逆置操作,即在原顺序表存储空间上将元素按位序逆转。

5.编写一个算法,实现带头结点的单链表就地逆置操作,即利用原链表结点空间实现逆转。

6.编写一个算法,计算带头结点的单链表 L 中数据域值为 x 的结点个数。

7.编写一个算法,将带有头结点单链表 L 中数据域值最小的那个结点移到链表的最前面。

8.L1 与 L2 分别为两单链表头结点地址指针,且两表中数据结点的数据域均为一个字母。设计把 L1 中 与 L2 中数据相同的连续结点顺序完全倒置的算法。

9.设线性表 A=(a1,a2,

,am),B=(b1,b2,

,bn),试写一个按下列规则合并 A、B 为线性表 C 的算法,使得:

当 m≤n 时,C=(a1,b1,

,am,bm,bm+1,

,bn);或者当 m>n 时,C=(a1,b1,

,an,bn,an+1,

,am)。

线性表 A、B、C 均以单链表作为存储结构,且 C 表利用 A 表和 B 表中的结点空间构成。注意:单链表 的长度值 m 和 n 均未显式存储。

10.已知有单链表表示的线性表中含有三类字符的数据元素(如字母字符、数字字符和其他字符),试 编写算法来构造三个以循环链表表示的线性表,使每个表中只含同一类的字符,且利用原表中的结点空间作 为这三个表的结点空间,头结点可另辟空间。

相關文件