1单选(2分)线性表是( )。
A.一个有限序列,可以为空
B.一个有限序列,不可以为空
C.一个无限序列,可以为空
D.一个无限序列,不可以为空
正确答案:A
解析: A、线性表是具有n(n≥0)个数据元素的有限序列。

课本考据:线性表是具有相同特征的数据元素的一个有限序列。当 n=0时,表示线性表是一个空表,即不包含任何元素。

2单选(2分)线性表的基本运算ListInsert(&L,i,e)表示在线性表L中第i个位置上插入一个元素e,若L的长度为n,则i的合法取值是( )。
A.1≤i≤n
B.1≤i≤n+1
C.0≤i≤n-1
D. 0≤i≤n
正确答案:B
解析: B、线性表的基本运算ListInsert(&L,i,e)中,位置i是指逻辑序号,可以在L的位置1到位置n+1插入元素。

课本考据:插入数据元素,在L的第i(1<=i<=n+1)个位置插入一个新的元素e,L的长度增一。

3单选(2分)顺序表具有随机存取特性,指的是( )。
A.查找值为x的元素与顺序表中元素个数n无关
B.查找值为x的元素与顺序表中元素个数n有关
C.查找序号为i的元素与顺序表中元素个数n无关
D.查找序号为i的元素与顺序表中元素个数n有关
正确答案:C
解析: C、一种存储结构具有随机存取特性指的是,对于给定的序号i,在O(1)时间内找到对应元素值。

课本考据:顺序表示线性表的直接映射,可从求线性表中的某个数据元素的值的算法得知
=>
一个没有循环(或者有循环,但循环的次数与问题规模 n无关)的算法中原操作执行次数与问题规模无关,记作O(1),也成为常数阶

bool GetElem(SqList * L,int i, ElemType &e)
{if(i<1 || i>L->length)return false;e=L->data[i-1];return true;
}

4单选(2分)在顺序表中删除一个元素所需要的时间( )。
A.与删除元素的位置及顺序表的长度都有关
B.只与删除元素的位置有关
C.与删除任何其他元素所需要的时间相等
D.只与顺序表的长度有关
正确答案:A
解析: A、当从顺序表中删除元素时,为了保持顺序表的逻辑特性,需要移动元素以覆盖该删除的元素。因此在顺序表中删除一个元素与该元素的位置及顺序表的长度都有关。

课本考据:元素移动的次数与表长n=L->length和删除元素的位置i有关,共有n个元素可被删除。

5单选(2分)在n(n>1)个运算的顺序表中,算法时间复杂度为O(1)的运算是( )。
A.访问第i个元素(2≤i≤n)并求其前驱元素
B.在第i个元素之后插入一个新元素
C.删除第i个元素
D.将这n个元素递增排序
正确答案:A
解析: A、访问第i个元素(2≤i≤n)即L->data[i-1]和求其前驱元素L->data[i-2]的时间复杂度均为O(1)。

课本考据:元素移动的次数不仅与表长n=L->length有关,而且与插入、删除的位置i有关,平均时间复杂度为O(n)。

6单选(2分)关于线性表的顺序存储结构和链式存储结构的描述中,正确的是( )。
Ⅰ.线性表的顺序存储结构优于链式存储结构
Ⅱ.顺序存储结构比链式存储结构的存储密度高
Ⅲ.如需要频繁插入和删除元素,最好采用顺序存储结构
Ⅳ.如需要频繁插入和删除元素,最好采用链式存储结构
A.Ⅰ、Ⅱ、Ⅲ
B.Ⅱ、Ⅳ
C.Ⅱ、Ⅲ
D.Ⅲ、Ⅳ
正确答案:B
解析: B、线性表的顺序存储结构和链式存储结构各有优缺点,不能简单比较好坏,所以Ⅰ错误。链式存储结构使用指针表示逻辑关系,所以存储密度比较低,所以Ⅱ正确。如频繁使用插入和删除操作,链式存储结构更优于顺序存储结构,所以Ⅲ错误,Ⅳ正确。

7单选(2分)在单链表中,增加一个头节点的目的是为了( )。
A.使单链表至少有一个节点
B.标识链表中某个重要节点的位置
C.方便插入和删除运算的实现
D.表示单链表是线性表的链式存储结构
正确答案:C
解析: C、在单链表中增加一个头节点的主要目的是使删除和插入节点操作更简单,方便运算的实现。

8单选(2分)通过含有n(n≥1)个元素的数组a,采用头插法建立一个单链表L,则L中节点值的次序( )。
A.与数组a的元素次序相同
B.与数组a的元素次序相反
C.与数组a的元素次序无关
D.以上都不对
正确答案:B
解析: B、采用头插法建立单链表时,后面的节点插入到最前端,所以L的节点值次序与数组a的元素次序相反。

9单选(2分)某算法在含有n(n≥1)个节点的单链表中查找值为x节点,其时间复杂度是( )。
A.O(log2n)
B.O(1)
C.O(n2)
D.O(n)
正确答案:D
解析: D、需要从首节点出发逐一查找每个节点。

课本考据:按元素值查找的算法在单链表L中从头开始找第一个值域与e相等的结点,若存在这样的结点,则返回逻辑序号,否则返回0;

int LocateElem(LinkNode * ElemType)
{int i=1;LinkNode * p=L->next;while(p != UNLL && p->data != e){p=p->next;i++;}if(p==NULL)return(0);elsereturn(i);
}

10单选(2分)在长度为n(n≥1)的单链表中删除尾节点的时间复杂度为( )。
A.O(1)
B.O(log2n)
C.O(n)
D.O(n2)
正确答案:C
解析: C、在长度为n(n≥1)的单链表中删除尾节点时,需要找倒数第2个节点,此时时间复杂度为O(n)。

课本考据L:删除数据元素的实现过程是先在单链表L中找到第i-1个结点,由p指向它。若存在这样的结点,且也存在后继结点(也由p指向它),则删除q所指的结点,返回true;否则返回false,表示参数i错误。

bool ListDelete(LinkNode *& L,int i,ElemType & e)
{int j=0;LinkNode * p=L,*q;if(i<=0)return false;while(j<i-1 && p != NULL){j++;p=p->next;}if(p==NULL)ruturn false;else{q=p->next;if(q==NULL)return false;e=q->data;p->next=q->next;free(q);return true;}
}

11单选(2分)关于线性表的正确说法是( )。
A.每个元素都有一个前驱和一个后继元素
B.线性表中至少有一个元素
C.表中元素的排序顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素有且仅有一个前驱和一个后继元素
正确答案:D
解析: D、线性表属典型的线性结构。

12单选(2分)以下关于顺序表的叙述中,正确的是( )。
A.顺序表可以利用一维数组表示,因此顺序表与一维数组在结构上是一致的,它们可以通用
B.在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻
C.顺序表和一维数组一样,都可以进行随机存取
D.在顺序表中每一个元素的类型不必相同
正确答案:C
解析: C、顺序表中所有元素必须连续存放,而一维数组中所有元素可以不连续存放,另外,一维数组只有按下标的存、取两个操作,而顺序表可以进行线性表的插入、删除等操作,所以选项A错误。在顺序表中,逻辑上相邻的元素在物理位置上也一定相邻,所以选项B错误。顺序表中每一个元素的类型必须相同,所以选项D错误。

13单选(2分)以下属于顺序表的优点是( )。
A.插入元素方便
B.删除元素方便
C.存储密度大
D.以上都不对
正确答案:C
解析: C、顺序表的存储密度为1,所以其存储密度大。

14单选(2分)设线性表中有n个元素,以下运算中,( )在单链表上实现要比在顺序表上实现效率更高。
A.删除指定位置元素的后一个元素
B.在尾元素的后面插入一个新元素
C.顺序输出前k个元素
D.交换第i个元素和第n-i+1个元素的值(i=1,2,…,n)
正确答案:A
解析: A、在顺序表中插入元素和删除元素时需要移动较多元素,而在单链表上执行同样的操作不需要移动元素,只需修改相关节点的指针域。

15单选(2分)以下关于单链表的叙述中正确的是( )。
Ⅰ.节点除自身信息外还包括指针域,存储密度小于顺序表
Ⅱ.找第i个节点的时间为O(1)
Ⅲ.在插入、删除运算时不必移动节点
A.仅Ⅰ、Ⅱ
B.仅Ⅱ、Ⅲ
C.仅Ⅰ、Ⅲ
D.Ⅰ、Ⅱ、Ⅲ
正确答案:C
解析: C、单链表不具有随机存取特性,即不能在O(1)的时间内找到第i个节点。

课本考据:在链表中,逻辑上相邻的元素对应的存储位置是通过指针来连接的,因而每个结点的存储位置可以任意安排,不必要求相邻,所以当进行插入或删除操作时只需要修改相关结点的指针域即可。(方便省时)

武汉大学数据结构MOOC第2周测验相关推荐

  1. 武汉大学数据结构MOOC第1周测验

    1单选(2分)计算机所处理的数据一般具备某种内在联系,这是指( ). A.数据和数据之间存在某种关系 B.元素和元素之间存在某种关系 C.元素内部具有某种结构 D.数据项和数据项之间存在某种关系 正确 ...

  2. 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结

    20162303 2016-2017-2 <程序设计与数据结构>第六周学习总结 教材学习内容总结 通过继承来创建类,比从零开始编写代码来的更快.更容易也更经济. 继承在父类与子类之间建立了 ...

  3. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

  4. # 学号 2017-2018-20172309 《程序设计与数据结构》第十一周学习总结

    ---恢复内容开始--- 学号 2017-2018-20172309 <程序设计与数据结构>第十一周学习总结 教材学习内容总结 第23章 初识Android操作系统:一个多用户的Linux ...

  5. 20172328 2018-2019《Java软件结构与数据结构》第八周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第八周学习总结 概述 Generalization 本周学习了二叉树的另一种有序扩展?是什么呢?你猜对了!ヾ(◍°∇°◍) ...

  6. 20172307 2018-2019-1 《程序设计与数据结构》第3周学习总结

    20172307 2018-2019-1 <程序设计与数据结构>第3周学习总结 教材学习内容总结 队列 1.队列的元素是按FIFO方式处理的. 2.队列是一种可存储重复编码密钥的便利集合. ...

  7. 20172317 2018-2019-1 《程序设计与数据结构》第6周学习总结

    20172317 2018-2019-1 <程序设计与数据结构>第6周学习总结 教材学习内容总结 树: 一种非线性结构,其中元素被组织成一个层次结构:树由一个包含结点和边的集构成 元素存储 ...

  8. 学号 20172326 《程序设计与数据结构》第三周学习总结

    学号 20172326 <程序设计与数据结构>第三周学习总结 教材学习内容总结 队列是先进先出的数据结构(FIFO)与栈不同,队列的两端可分别进行操作 first与front相同,返回首段 ...

  9. 20172307 2018-2019-1 《程序设计与数据结构》第4周学习总结

    20172307 2018-2019-1 <程序设计与数据结构>第4周学习总结 教材学习内容总结 列表 1.列表可以分为有序列表.无序列表和索引列表. 2.有序列表中的元素具有内在关联,这 ...

最新文章

  1. Latex常用数学符号
  2. 如何新增或修改ns2的核心模組--queue management
  3. 一款b站视频下载工具软件mac版
  4. PHP反射的优点,PHP 反射使用和理解
  5. php接口和java接口_java和php接口的区别是什么
  6. mysql去掉小数点多余0_mysql数据库个性化需求:版本号排序
  7. 【NOIP2005】【Luogu1052】过河
  8. Android App Architecture使用详解
  9. android bionic memcpy 汇编源码解析
  10. Cannot find module ‘https-proxy-agent‘
  11. Android开发入门教程pdf
  12. 数据中心设计方案 实例,数据中心网络设计方案
  13. 基于c++图形化界面的clock页面置换算法
  14. 你是否知到西游记中孙悟空的师傅是什么人?
  15. maven加载依赖时总是Updating [central] https://repo.maven.apache.org/maven2
  16. 大数据高级开发工程师——Spark学习笔记(8)
  17. twitter开源_30位开源社区经理将在Twitter上关注
  18. 2004版最新核心期刊目录
  19. 微信小程序--图片懒加载
  20. 用html3d静态相册带音乐,3D立体动态相册(带背景音乐)HTML+CSS脚本

热门文章

  1. 开源聚合路由 OpenMPTCProuter 配置使用
  2. 【Angular2】 如何创建一个Angular2项目
  3. ROS导航小车经验总结
  4. 如何使用for循环打印直角三角形
  5. ArcGIS Runtime SDK是什么?
  6. 未来十年,互联网行业到底需要什么样的运营?
  7. 【java】HashMap底层实现原理及面试题
  8. ssh连接另一台主机
  9. 使用 UltraISO 将系统写入U盘
  10. 在职人员学历提升有哪几种方式?