数据结构期末复习第二章线性表

第二章:线性表

1.线性结构的基本特征
答:线性结构是若干数据元素构成的有序(次序)集
① 集合中必存在唯一的一个“第一元素”;
② 集合中必存在唯一的一个 “最后元素”;
③ 除第一元素之外,均有 唯一的前驱;
④ 除最后元素之外,均有 唯一的后继.

2.线性表的顺序存储结构和链式存储结构分别是______。(  D )
  A. 顺序存取的存储结构、顺序存取的存储结构
  B. 顺序存取的存储结构、随机存取的存储结构
  C. 随机存取的存储结构、随机存取的存储结构
  D. 随机存取的存储结构、顺序存取的存储结构解析:

解析:

顺序存储结构的地址在内存中是连续的所以可以通过计算地址实现随机存取,

而链式存储结构的存储地址不一定连续,只能通过第一个结点的指针顺序存取;

3. 一批数据用顺序存储结构,第一个元素的存储地址是200,且每个元素长度为2,则第5个元素的存储地址是( B)
     A、210                             B、208
     C、200                             D、220

解析:

线性表的顺序表示用一组地址连续的存储单元依次存放线性表中的数据元素,线性表的起始地址,称作线性表的基地址。

方法一:

所有数据元素的存储位置均取决于第一个数据元素的存储位置
      LOC(ai) = LOC(a1) + (i-1)×每个元素的长度
                ↑基地址

208  =     200    +(5-1)*2

方法二:

第一个元素存储地址是200,

第二个元素存储地址是202,

第三个元素存储地址是204,

第四个元素存储地址是206,

第五个元素存储地址是208。

4.从具有n个结点的单链表中查找值等于x的结点时,在查找成功的情况下,平均需比较(  D   )个结点。

A)n     B)n/2    C)(n-1)/2    D)(n+1)/2
解析:

在n个结点的单链表中,查找第i个节点需要比较关键字的次数是i,

所以在查找成功的情况下,需平均比较的结点个数为(1+2+...+n)/n=(n+1)/2

5.单链表中,增加头结点的目的是为了(  A  )。
   A)方便运算的实现B)用于标识单链表C)使单链表中至少有一个结点D)用于标识起始结点的位置

解析:

头节点不仅标识了表中首节点的位置,而且根据单链表(包含头节点)的结构。

只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

6.结构体成员如何访问?

答:1、结构体变量中成员的访问
    例如:LNode a;
    a.data; a.next;
   2、结构体指针所指结点中成员的访问
    例如:LNode *p;或LinkList p;
    p->data; p->next;

7.单链表中带头结点和不带头结点的单链表L判空条件有何不同?
答:
        带头结点:L->next = NULL

不带头结点:L = NULL

8.p->data = ai,则p->next->data = ?
答:     p->next->data = ai+1

9.在一个有n 个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(     )
  A.O(1)                           B.O(n)
  C.O(n*n)                         D.O(nlog2n)

解析:

本题主要考核有序单链表上的插入操作及算法分析。对数据结构的任何操作都不能改变其原有的结构特性。

因此,在有序单链表中插入一个新结点后,仍然要保持它的有序性。
      插入操作的关键是查找插入位置,要时间也是花在插入位置的查找上。

n个结点的单链表,有,n+1个可能插入的位置,即第一个结点之前和每一个结点之后。

在第一个结点之前插入,需比较一次;

在第一个结点之后插入需比较两次;……;

在第,n个结点之后插入需查找次。

如果在每一个位置上作插入的概率相等,即Pi=1/(n+1),

则在有序单链表上查找插入位置的平均比较次数为:

--------------------------

10.若某线性表最常用的操作是存取任一指定序号的元素和在表尾进行插入和删除运算,则利用( A   )存储方式最节省时间。
  A.顺序表                     B.双向链表
  C.带头结点的双向循环链表      D.单循环链表

解析:

“存取任意指定序号”最好的方法是实现“随机存取”,则可采用顺序表。

并且,因为插入和删除操作都是在最后进行的,所以无需大量移动数据元素,选项A是最合适的。

11. 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(  D  )存储方式最节省运算时间。
   A.单链表       B.仅有头指针的单循环链表     C.双链表       D.仅有尾指针的单循环链表

12.若某线性表中最常用的操作是在最后一个元素之前插入和删除元素,则采用__ D___最节省运算时间。

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

解析:

单链表从链表的第一个表元开始,将线性表的节点依次存储在链表的各表元中。链表的每个表元除要存储线性表节点信息外,还要一个成分用来存储其后继节点的指针。

循环链表是单链表的变形,其特点是表中最后一个节点的指针域指向头节点,整个链表形成一个环。
    因此,从表中的任意一个节点出发都可以找到表中的其他节点。循环链表中,从头指针开始遍历的结束条件不是节点的指针是否为空,而是是否等于头指针。为简化操作,循环链表中往往加入表头节点。 双向链表的节点中有两个指针域,其一指向直接后继,另一指向直接前驱,克服了单链表的单向性的缺点。

13.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用(  D  )最节省时间。
  A. 单链表                   B.单循环链表

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

解析:

问题出现在查找效率上

链表最常用的操作是在末尾插入节点和删除尾节点,在尾插入 删除操作,都需要知道他的前导

而单链表要查找到最有一个元素需要遍历全部链表
双链表直接可以查到前导,最常用的操作实在最后一个元素之后插入一个元素和删除第一个元素,

删除头结点需要头指针或者只用一个->next域就能查到 速度就快了
在有第二个条件 删除最后一个元素 有尾指针就最好了 可以直接找到尾巴元素 同时他还是循环链表 所以正好他的->next就是头结点

14. 链表不具有的特点是( B   )
A.插入、删除不需要移动元素
B.可随机访问任一元素
C.不必事先估计存储空间
D.所需空间与线性表长度成正比

解析:

顺序存储结构的地址在内存中是连续的所以可以通过计算地址实现随机存取

链表是链式存储结构,其存储地址不一定连续,只能通过第一个结点的指针顺序存取,不可以实现随机访问任意元素。

15.静态链表中指针表示的是(  B  )。
A. 内存地址             B.数组下标
C.下一元素地址          D.左、右孩子地址

解析:

所谓静态链表就是没有指针的,用下标模仿这个指针的功能的

时间: 2024-11-08 22:21:16

数据结构期末复习第二章线性表的相关文章

第二章——线性表

线性表 一.定义 线性表是最常用且最简单的一种数据结构. 简而言之,一个线性表是n个数据元素的有限的序列. 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的 (注意,这句话只适用大部分线性表,而不是全部.比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点).by~百度百科 二.线性表的顺序表示和实现 1.顺序表示指的是用一组地址连续的储存单元依次储存线性表的数据元素. 通常用数组来

【学习总结】《大话数据结构》- 第3章-线性表

[学习总结]<大话数据结构>- 总 启示: 线性表:零个或多个数据元素的有限序列. 目录 3.1 开场白 3.2 线性表的定义 3.3 线性表的抽象数据类型 3.4 线性表的顺序存储结构 3.5 顺序存储结构的插入与删除 3.6 线性表的链式存储结构 3.7 单链表的读取 3.8 单链表的插入与删除 3.9 单链表的整表创建 3.10 单链表的整表删除 3.11 单链表结构与顺序存储结构优缺点 3.12 静态链表 3.13 循环链表 3.14 双向链表 3.15 总结回顾 3.16 结尾语 -

数据结构之第二章线性表之静态链式存储

1--特点:用一维数组来描述线性表,用游标代替指针指示节点在数组中的相对位置.不设“指针”类型的高级语言中适用链表结构. 2--线性表的静态链式存储结构 ////  静态单链表.h//  单链表的静态存储//// 6 //  Copyright (c) 2014年 dashuai. All rights reserved.// #ifndef SLIST_H#define SLIST_H#include <stdio.h>#include <stdlib.h> #define MA

数据结构之第二章线性表之链式存储

1~~特点:逻辑上相邻的元素,他的物理位置不一定相邻,其实几乎是不像邻的.表中的元素只能顺序访问,插入,删除等操作只需修改指针而不需要移动元素,存储空间利用率高,表的容量可以动态变化.适合个数变化大的情况. 2--链式存储`的存储结构 typedef struct Node{ int data; struct Node *next; }NODE,*PNODE; 3~~线性表的基本操作 (1)线性表的的  插表头  建立算法 ” 插表头“方式得到的线性链表,元素存储的顺序和输入顺序相反,这与栈的特

数据结构之第二章线性表

1 线性表的顺序存储 (1)线性表的顺序存储特点:逻辑上相连的元素,物理位置也相连.可随机访问表中元素,表中的存储位置可以用一个简单的,直观的公式表示,但是插入和删除都要移动大量的元素,效率不高,适合元素个数变化不大的情况,此时,如数据元素按照一定的顺序存储,则称为顺序存储的有序表,简称为    静态表. (2)线性表的动态分配顺序存储结构 typedef struct{ Elemtype *elem; //存储空间起始地址 int length; //当前长度 int listsize; //

数据结构总结 第二章 线性表 抽象数据类型的具体实现

#include<stdio.h> #include<stdlib.h> #include<iostream> #define MAXSIZE 1000 #define ERROR 0 #define OK 1 using namespace std; typedef int Status; typedef int ElemType; /////////////线性表定义(顺序表)//////////////////////// typedef struct { Ele

《数据结构与算法》第二章 线性表

线性表 定义: 由n个特性相同 数据元素(即可有很多数据项)构成的有限序列,同时相邻数据元素之间存在 序偶 关系. 线性表中元素个数就是 表长 . 特点: ·存在唯一一个被称为 “第一个” 的数据元素(线性起点.起始结点): ·存在唯一一个被称为 “最后一个” 的数据元素(线性终点.终端结点): ·除第一个以外,结构中的每个数据元素均 只有一个前驱 : ·除最后一个外,结构中的每个数据元素均 只有一个后继 . 顺序表示和实现 线性表的顺序表示指的是用一组地址连续的存储单元一次存储线性表的数据元素

数据结构期末复习第一章绪论

前言: 最近快期末了,复习下数据结构,下列习题和答案解析,大部分来源于网络,如有不对之处还请指出. 在这里,星云祝各位考生期末考试顺利,新年快乐! 第一章绪论 1. 数据结构是一门研究非数值计算的程序设计问题中计算机的(操作对象)以及它们之间的(关系)和(操作)的学科. 2. 下列关于数据结构的基本概念中,叙述正确的是( C ). A. 数据元素是数据的最小单位. B. 数据的逻辑结构是指数据的各数据项之间的逻辑关系. C. 任何一个算法的设计取决于选定逻辑结构,而算法的实现依赖于采用的存储结构

第二章 线性表

2.1线性表类型定义 线性表描述:A=(a1,a2,...an);A为线性表的名称,ai为线性表 的数据元素. 线性表的离散定义:B=<A,R>,A包含n个结点(a1,a2,...an),R中只包含一个关系,即线性关系,R={(ai-1,ai)|i=1,2,....,n}, 一般的线性表的操作可以包含以下几种: * public linklist()  建立一个空的线性表. * public linklist(collection c)  将collection c中的数据依次建立一个线性表.