收藏 分享(赏)

第二章 线性表.doc

上传人:tangtianxu1 文档编号:3039533 上传时间:2018-10-02 格式:DOC 页数:8 大小:53.50KB
下载 相关 举报
第二章 线性表.doc_第1页
第1页 / 共8页
第二章 线性表.doc_第2页
第2页 / 共8页
第二章 线性表.doc_第3页
第3页 / 共8页
第二章 线性表.doc_第4页
第4页 / 共8页
第二章 线性表.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、第二章 线性表一、选择题1线性表是具有 n 个_C_的有限序列(n0) 。A表元素 B字符 C数据元素 D数据项2一个顺序表所占用的存储空间大小与_B_无关。A表的长度 B元素的存放顺序C元素的类型 D元素中各字段的类型3线性表的顺序存储结构是一种_A_。A随机存取的存储方式 B顺序存取的存储方式C索引存取的存储方式 DHash 存取的存储方式4. 若线性表采用顺序存储结构,每个元素占用 4 个存储单元,第一个元素的存储地址为 100,则第 12 个元素的存储地址是_B_。A112 B.144 C.148 D.4125. 线性表是_A_。A一个有限序列,可以为空 B一个有限序列,不能为空C一个

2、无限序列,可以为空 D一个无限序列,不能为空6对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为_C_。AO(n)O(n) BO(n)O(1) CO(1)O(n) DO(1)O(1)7若长度为 n 的非空线性表采用顺序存储结构,删除表的第 i 个数据元素,首先需要移动表中_A_中数据元素。An-i Bn+i Cn-i+1 Dn-i-18对顺序存储的线性表,设其长度为 n,在任何位置插入或删除操作都是等概率的。删除一个元素时平均要移动表中的_C_个元素。A.n/2 B.(n+1)/2 C.(n-1)/2 D.n9若长度为 n 的线性表采用顺序存储结构,在其第 i 个位置插入一个新元素的

3、算法的时间复杂度为_C_。 (1in+1)AO(0) BO(1) CO(n) DO(n 2)10线性表中各链接点之间的地址_C_。A必须连续 B部分地址必须连续C不一定连续 D连续与否无所谓11在 n 个结点的线性表的数组表示中,算法的时间复杂度是 O(1)的操作是_A_。A访问第 i 个结点后插入一个新结点(1in)和求第 i 个结点的直接前驱(2in)B在第 i 个结点后插入一个新结点(1in)C删除第 i 个结点(1in)D以上都不对12单链表中,增加一个头结点的目的是为了_C_。A使单链表至少有一个结点 B标识表结点中首结点的位置C方便运算的实现 D说明单链表是线性表的链式存储13对于

4、一个头指针为 head 的带头结点的单链表,判定该表为空表的条件是_B_。Ahead=NULL Bhead-next=NULLChead-next=head Dhead!=NULL14将长度为 n 的单链表链接在长度为 m 的单链表后面的算法的时间复杂度采用大 O 形式表示应该是_C_。AO(1) BO(n) CO(m) DO(n+m)15静态链表中指针表示的是_C_。A下一个元素的地址 B内存储器的地址C下一个元素在数组中的位置 D左链或右链指向的元素的地址16非空的循环单链表 head 的尾结点 p 满足_A_。AP-link=head BP-link=NULL CP=NULL DP=he

5、ad17某线性表用带头结点的循环单链表存储,头指针为 head,当 head-next-next=head 成立时,线性表的长度是_B_。A0 B1 C2 D318在什么情况下,应使用链式结构存储线性表 L?_B_A需经常修改 L 中的结点值 B需不断对 L 进行删除插入C需要经常查询 L 中的结点值 DL 中结点结构复杂19与单链表相比较,双向链表的优点之一是_D_。A可以省略头结点指针 B可以随机访问C插入、删除操作更简单 D顺序访问相邻结点更灵活20某线性表常发生的操作为删除第一个数据元素和最后一个元素后添加新元素,采用_D_作为存储结构,能使其存储效率和时间效率最高。A单链表 B仅用头

6、指针的循环单链表C双向循环链表 D仅用尾指针的循环单链表21若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用_D_存储方式最节省运算时间。A单链表 B双链表 C单循环链表 D带头结点的双循环链表22对于一个线性表既要求能够进行较快的插入和删除,又要求存储结构能够反映数据之间的逻辑关系,则应用_C_。A顺序方式存储 B散列方式存储 C链接方式存储 D以上方式均可23若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用_A_存储方式最节省时间。A顺序表 B双链表 C带头结点的双循环链表 D单循环链表24若线性表最常用的操作是存取第 i 个元素

7、及其前驱和后继元素的值,为节省时间应采用的存储方式为_D_。A单链表 B双向链表 C单循环链表 D顺序表25下面哪一条是顺序存储结构的优点?_C_A插入运算方便 B可方便地用于各种逻辑结构的存储表示C存储密度大 D删除运算方便26下面关于线性表的叙述中,错误的是_B_。A.线性表采用顺序存储,必须占用一批连续的存储单元B.线性表采用顺序存储,便于进行插入和删除的操作C.线性表采用链接存储,不必占用一片连续的存储单元D.线性表采用链接存储,便于插入和删除操作27在非空线性链表中由 p 所指的链接点后面插入一个由 q 所指的链接点的过程是依次执行动作_B_。Aq-link=p;p-link=q;

8、Bq-link=p-link;p-link=q;Cq-link=p-link;p=q; Dp-link=q;q-link=p;26在非空双向循环链表中由 q 所指的链接点前面插入一个由 p 指的链接点的过程是依次执行语句 p-rlink=q;p-llink=q-llink;q-llink=p; _D_。Aq-rlink-llink=p; Bq-llink-rlink=p;Cp-rlink-llink=p; Dp-llink-rlink=p;29在非空双向循环链表中由 q 所指的链接点后面插入一个由 p 指的链接点的动作依次为_D_。Ap-llink=q ; p-rlink=q-rlink ;

9、q-rlink=p ; q-rlink-llink=p;Bp-rlink=q-rlink ; p-llink=q ; q-rlink ; q-rlink-llink=p;Cp-llink=q ; p-rlink=q-rlink ; q-rlink=p ; p-llink-rlink=p;Dp-llink=q ; p-rlink=q-rlink ; q-rlink=p ; p-rlink-llink=p;30在双向链表存储结构中,删除 p 所指的结点时须修改指针_A_。Ap-llink-rlink=p-rlink ; p-rlink-llink=p-llink ;Bp-llink=p-llink

10、-llink ; p-llink-rlink=p ;Cp-rlink-llink=p ; p-rlink=p-rlink-rlink ;Dp-rlink=p-llink-llink ; p-llink=p-rlink-rlink ;31单链表的存储密度为_C_。A大于 1 B等于 5 C小于 1 D不能确定二判断题1. 线性表的逻辑顺序与存储顺序总是一致的。 ( )2. 线性表的顺序存储结构比链式存储结构更好。 ( )3. 线性表中的所有元素都有一个前驱元素和后继元素。 ( )4. 不论线性表采用顺序存储结构还是链式存储结构,删除值为X 的结点的时间复杂度均为O(n)。 ( )5. 线性的数据

11、结构可以顺序存储,也可以链接存储。非线性的数据结构只能链接存储。 ( )6. 非空线性表中任意一个数据元素都有且仅有一个直接后继元素。 ( )7. 用一组地址连续的存储单元存放的元素一定构成线性表。 ( )8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。( )9. 顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 ( )10. 顺序表中所有结点的类型必须相同。 ( )11. 对链表进行插入和删除操作时不必移动链表中结点。 ( )12. 非空的双向循环链表中任何结点的前驱指针均不为空。 ( )13. 链式存储在插入和删除时需要保持物理存储空间的顺

12、序分配,不需要保持数据元素之间的逻辑顺序。 ( )14. 单链表从任何一个结点出发,都能访问到所有结点。 ( )15. 符号p-next 出现在表达式中表示p 所指的那个结点的内容。 ( )16. 带表头结点的双向循环链表判空的条件是: first-rlink = first(first 为表头指针) 。 ( )三、综合应用题1.利用顺序表的操作,实现以下函数:1)从顺序表中删除具有最小值的元素并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。2)从顺序表中删除第 i 个元素并由函数返回被删除元素的值,如果 i 不合理或顺序表为空则显示出错信息并退

13、出运行。3)向顺序表中第 i 个位置插入一个新元素 x。如果 i 不合理则显示出错信息并退出运行4)从顺序表中删除具有给定值 x 的所有元素。5)从顺序表中删除其值在给定值 s 与 t 之间(要求 s 小于 t)的所有元素。如果 s 或 t 不合理或者顺序表为空,则显示错误信息并退出。6)从有序顺序表中删除其值在给定值 s 与 t 之间(要求 s 小于 t)的所有元素,如果 s 或 t 不合理或顺序表为空,则显示错误信息并退出。7)将两个有序顺序表合并成一个新的有序顺序表并由函数返回结果顺序表8)从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同。2.请设计算法将不带头结点的单链

14、表就地逆置。3.有一个单链表 L(至少有 1 个结点) ,其头结点指针为 head,编写一个过程将 L 逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。4.设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:找出最小值结点,且打印该数值。若该数值是奇数,则将其与直接后继结点的数值交换。若该数值是偶数,则将其直接后继结点删除。5.给定(已生成)一个带表头结点的单链表,设 head 为头指针,结点的结构为(data,next) ,data 为整型元素,next 为指针,试写出算法:按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间(要求:

15、不允许使用数组作辅助空间) 。6.假设有两个按元素值递增次序排列的线性表,并要求利用原来两个单链表的结点存放归并后的单链表。7.在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。例如:(7,10,10,21,30,42,42,42,51,70)将变为(7,10,21,30,42,51,70) 。8.试编写在带头结点的单链表中删除一个最小值结点的高效算法:void delete(Linklist struct node *link;NODE;NODE *A,*B,*C;NODE *append (NODE *last,int

16、e)last-link=(NODE*)malloc(sizeof(NODE);last-link-element=e;return (last-link);NODE *difference (NODE *A,NODE *B)14.设一单向链表的头指针为 head,链表的记录中包含着整数类型的 key域,试设计算法,将此链表的记录按照 key 递增的次序进行就地排序。15.设计算法将一个带头结点的单链表 A 分解为两个具有相同结构的链表B、C,其中 B 表的结点为 A 表中值小于零的结点,而 C 表的结点为 A 表中值大于等于零的结点(链表 A 的元素类型为整型,要求 B、C 表利用 A 表的结

17、点) 。16.将一个带头结点的单链表 A 分解为两个带头结点的单链表 A 和 B,使得A 表中含有原表中序号为奇数的元素,而 B 表中含有原表中序号为偶数的元素,且保持其相对顺序不变。1)写出其类型定义。2)写出算法。17.两个整数序列 A=a1,a 2,a 3,a m和 B=b1,b 2,b 3,b n已经存入两个单链表中,设计一个算法,判断序列 B 是否是序列 A 的子序列。18.已知线性表(a 1,a 2,a 3,a n)按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部正数值(假设 0 为正数)元素前边的算法。例如:(x,-x,-x,x,x,-x, ,x)变

18、为(-x,-x,-x, ,x,x,x) 。19.一元稀疏多项式以循环单链表按降幂排列,结点有三个域,系数域coef,指数域 exp 和指针域 next。现对链表求一阶导数,链表的头指针为 ha,头结点的 exp 域为-1。20设用带头结点的双向循环链表表示的线性表为 L=(a 1,a 2,a3, ,an) 。写出算法将 L 改造成:L=(a 1,a3, ,an, ,a4,a2).结点和结点指针类型定义如下:typedef struct nodeElemType data;Struct node *prior,next;*DLinkList;21.设有一个头指针为 L 的带有表头结点的非循环双向链表,其每个结点中除有 pred(前驱指针) 、data(数据)和 next(后继指针)域外,还有一个访问频度域 freq。在链表被起用前,其值均初始化为零。每当在链表中进行一次Locate(L,x)运算时,令元素值为 x 的结点中 freq 域的值增 1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的 Locate(L,x)运算的算法,该运算为函数过程,返回找到结点的地址,类型为指针型。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报