当前位置:文档之家› 数据结构第二章线性表

数据结构第二章线性表

数据结构第二章线性表

基本信息:[矩阵文本题] *

1. 在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为 [单选题] *

A.n-i+1(正确答案)

B.n-i

C.i

D.i-1

2. 若一个顺序表中第一个元素的存储地址为1000,每个元素占4个地址单元,那么,第6个元素的存储地址应是 [单选题] *

A.1020(正确答案)

B.1010

C.1016

D.1024

3. 带头结点的单链表(以head为头指针)为空的判断条件是 [单选题] *

A.head!=NULL

B.head->next==head

C.head->next==NULL(正确答案)

D.head ==NULL

4. 将长度为n的单链表连接在长度为m的单链表之后,其算法的时间复杂度为 [单选题] *

A.O(1)

B.O(m)(正确答案)

C.O(n)

D.O(m+n)

5. 在一个单链表中,若删除p指向结点的后继结点,则执行的操作为 [单选题] * A.q=p->next;p->next=p->next->next;free(q);(正确答案)

B.p=p->next;q=p->next;p=q->next;free(q);

C.q=p->next->next;p=p->next;free(q);

D.p=p->next->next;q=p->next;free(q);

6. 线性表是一个有限序列,组成线性表的基本单位是 [单选题] *

A.数据项

B.数据元素(正确答案)

C.数据域

D.字符

7. 顺序表便于 [单选题] *

A.插入结点

B.删除结点

C.按值查找结点

D.按序号查找结点(正确答案)

8. 对需要频繁插入和删除结点的线性表,适合的存储方式是 [单选题] *

A.顺序储存

B.链式存储(正确答案)

C.索引存储

D.散列存储

9. 设带头结点的单循环链表的头指针为head,指针变量p指向尾结点的条件是 [单选题] *

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

B.p->next==head(正确答案)

C.p->next->next==NULL

D.p->next==NULL

10. 针对线性表逻辑上相邻的两个元素,下列叙述中,正确的是 [单选题] *

A.采用顺序存储时一定相邻,采用链式存储时也一定相邻

B.采用顺序存储时一定相邻,采用链式存储时不一定相邻(正确答案)

C.采用顺序存储时不一定相邻,采用链式存储时一定相邻

D.采用顺序存储时不一定相邻,采用链式存储时也不一定相邻

11. 线性表的逻辑顺序和存储顺序总是一致的。 [判断题] *

错(正确答案)

12. 线性表采用链式存储时,结点和结点内部的存储空间可以是不连续的。 [判断题] *

对(正确答案)

13. 对任何数据结构,链式存储结构一定优于顺序存储结构。 [判断题] *

错(正确答案)

14. 线性表的特点是每个元素都有一个前驱和一个后继。 [判断题] *

错(正确答案)

15. 在线性表中,结点的类型都是一样的,即每个结点占据的存储空间是一样的。[判断题] *

对(正确答案)

16. 顺序存储的插入和删除效率低。 [判断题] *

对(正确答案)

17. 在线性链表中删除结点时,只需要将被删结点释放,不需要修改任何指针。[判断题] *

错(正确答案)

18. 顺序存储的线性表可以实现随机存取。 [判断题] *

对(正确答案)

19. 循环链表不是线性表。 [判断题] *

错(正确答案)

20. 在带头结点的单循环链表中,任一结点的后继指针均不为空。 [判断题] *

对(正确答案)

数据结构整理完整版

第二章线性表 一、顺序表和链表的优缺点 1.顺序表 定义:用一组连续的存储单元(地址连续)依次存放线性表的各个数据元素。即:在顺序表中逻辑结构上相邻的数据元素,其物理位置也是相邻的。 优点 逻辑相邻,物理相邻 可随机存取任一元素 存储空间使用紧凑 缺点 插入、删除操作需要移动大量的元素(平均约需移动一半结点,当n很大时,算法的效率较低) 预先分配空间需按最大空间分配,利用不充分 表容量难以扩充 2.链式存储结构 定义:由分别表示a1,a2,…,a i-1,a i,…,a n的N 个结点依次相链构成的链表,称为线性表的链式存储表示 优势: (1)能有效利用存储空间; 动态存储分配的结构,不需预先为线性表分配足够大的空间,而是向系统“随用随取”,在删除元素时可同时释放空间。 (2)用“指针”指示数据元素之间的后继关系,便于进行“插入”、“删除”等操作; 插入或删除时只需要修改指针,而不需要元素移动。 劣势: (1)不能随机存取数据元素; (2)丢失了一些顺序表的长处,如线性表的“表长”和数据元素在线性表中的 “位序”,在单链表中都看不见了。如,不便于在表尾插入元素,需遍历整个表才能找到插入的位置。 二、单链表中删除一个节点和插入一个节点的语句操作,p29 1.插入元素操作 算法基本思想:首先找到相应结点,然后修改相应指针。 假定在a,b之间插入结点X,s指向X, p指向a,指针修改语句为: s->next=p->next; p->next =s;

2.删除元素操作 算法基本思想:首先找到第i-1 个结点,然后修改相应指针。 删除b结点,其中,P指向a,指针修改语句为:p->next=p->next->next; 三、单链表的就地逆置习题集2.22 算法的基本思想:以单链表作存储结构进行就地逆置的正确做法应该是:将原链表的头结点和第一个元素结点断开(令其指针域为空),先构成一个新的空表,然后将原链表中各结点,从第一个结点起,依次插入这个新表的头部(即令每个插入的结点成为新的第一个元素结点)。 算法思路:依次取原链表中的每个结点,将其作为第一个结点插入到新链表中去,指针p用来指向当前结点,p为空时结束。 void reverse (Linklist H){ LNode *p; p=H->next; /*p指向第一个数据结点*/ H->next=NULL; /*将原链表置为空表H*/ while (p){ q=p; p=p->next; q->next=H->next; /*将当前结点插到头结点的后面*/ H->next=q; } } 第三章栈和队列 一、栈和队列的特性 1.特点 栈必须按“后进先出”(LIFO)的规则进行操作,仅限在表尾进行插入和删除的操作。 队列(FIFO)必须按“先进先出”的规则进行操作,队尾插入,队头删除。 二、循环队列为空和满的判定方法,p63 队空条件:front == rear; 队满条件:(rear + 1) % maxSize == front

数据结构第2章作业 线性表(答案)

第2章线性表 班级学号__________-姓名 一、判断正误 (×)1. 链表的每个结点中都恰好包含一个指针。 链表中的结点可含多个指针域,分别存放多个指针。例如,双向链表中的结点可以含有两个指针域,分别存放指向其直接前趋和直接后继结点的指针。 (×)2. 链表的物理存储结构具有同链表一样的顺序。 链表的存储结构特点是无序,而链表的示意图有序。 (×)3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。 链表的结点不会移动,只是指针内容改变。 (×)4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。 (×)5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 正好说反了。顺序表才适合随机存取,链表恰恰适于“顺藤摸瓜” (×)6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 前一半正确,但后一半说法错误,那是链式存储的优点。顺序存储方式插入、删除运算效率较低,在表长为n的顺序表中,插入和删除一个数据元素,平均需移动表长一半个数的数据元素。 (×)7. 线性表在物理存储空间中也一定是连续的。 线性表有两种存储方式,顺序存储和链式存储。后者不要求连续存放。 (×)8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。 线性表有两种存储方式,在顺序存储时,逻辑上相邻的元素在存储的物理位置次序上也相邻。 (×)9. 顺序存储方式只能用于存储线性结构。 顺序存储方式不仅能用于存储线性结构,还可以用来存放非线性结构,例如 完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式。(后一节介绍) (×)10. 线性表的逻辑顺序与存储顺序总是一致的。 理由同7。链式存储就无需一致。 二、单项选择题 (C )1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构( B )2. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(A)110 (B)108 (C)100 (D)120 ( A )3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是: (A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) (B)在第i个结点后插入一个新结点(1≤i≤n) (C)删除第i个结点(1≤i≤n) (D)将n个结点从小到大排序 ( B )4. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素(A)8 (B)63.5 (C)63 (D)7 ( A )5. 链式存储的存储结构所占存储空间:

数据结构习题及答案与实验指导(线性表)2

第2章线性表 线性表是一种最基本、最常用的数据结构,它有两种存储结构——顺序表和链表。本章主要介绍线性表的定义、表示和基本运算的实现。重点讨论了线性表的存储结构,以及在顺序、链式两种存储结构上基本运算的实现。 重点提示: ●线性表的逻辑结构特征 ●线性表的顺序存储和链式存储两种存储结构的特点 ●在两种存储结构下基本操作的实现 2-1 重点难点指导 2-1-1 相关术语 1.线性表 线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,通常记为:(a1,a2,…,a n),其中n为表长,n=0时称为空表。 要点:一种逻辑结构,其数据元素属于相同数据类型,之间的关系是线性关系。 2.顺序表 顺序存储的线性表。 要点:按线性表中的元素的逻辑顺序依次存放在地址连续的存储单元里,其存储特点:用物理上的相邻实现逻辑上的相邻。 3.链表 用链表存储的线性表。 要点:链表是通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的,对每个结点的地址是否连续没有要求。 4.单链表 每个结点除了数据域外还有一个指向其后继的指针域。 要点:通常将每个元素的值和其直接后继的地址作为一个结点,通过每个结点中指向后继结点的指针表示线性表的逻辑结构。 5.头指针 要点:头指针是一个指针变量,里面存放的是链表中首结点的地址,并以此来标识一个链表。如链表H,链表L等,表示链表中第一个结点的地址存放在指针变量H、L中。通常用头指针来惟一标识一个链表。 6.头结点 要点:附加在第一个元素结点之前的一个结点,头指针指向头结点。当该链表表示一个非空的线性表时,头结点的指针域指向第一个元素结点;为空表时,该指针域为空。

数据结构 线性表

第1讲线性表 本章主要掌握如下内容: 线性表的定义和基本操作,线性表的实现,线性表的顺序存储结构及链式存储结构,线性表的应用。 知识点分析 (一)线性表的定义和基本操作 1.线性表基本概念 1)定义:是由相同类型的结点组成的有限序列。如:由n个结点组成的线性表 (a1, a2, …, a n) a1是最前结点,a n是最后结点。结点也称为数据元素或者记录。 2)线性表的长度:线性表中结点的个数称为其长度。长度为0的线性表称为空表。 3)结点之间的关系:设线性表记为(a1,a2,…a i-1 , a i, a i+1 ,…a n),称a i-1是a i的直接前驱结点 ....(简称前驱), a i+1是a i的直接后继结点 ....(简称后继)。 4)线性表的性质: ①线性表结点间的相对位置是固定 ..的,结点间的关系由结点在表中的位置确定。 ②如果两个线性表有相同的数据结点,但它们的结点顺序不一致,该两个线性表也是不相等的。 注意:线性表中结点的类型可以是任何数据(包括简单类型和复杂类型),即结点可以有多个成分,其中能唯一标识表元的成分称为关键字(key),或简称键。以后的讨论都只考虑键,而忽略其它成分,这样有利于把握主要问题,便于理解。 『经典例题解析』 线性表的特点是每个元素都有一个前驱和一个后继。( ) 【答案】错误。 【解析】线性表的第一个数据元素没有前驱,最后一个元素没有后继。其余的所有元素都有一个前驱和后继。 2.线性表的抽象数据类型 线性表是一个相当灵活的数据结构,其长度可以根据需要增加或减少。从操作上讲,用户不仅可以对线性表的数据元素进行访问操作,还可以进行插入、删除、定位等操作。 1)线性表的基本操作 假设线性表L有 数据对象 D={a i | a i ∈ElemSet,i=1,2,3,…,n,n>=0}, 数据元素之间的关系R={|a i-1 ,a i ∈D,i=1,2,…,n}, 则线性表L的基本操作如下所示: ●InitList(&L):其作用是构造一个长度为0的线性表(空线性表); ●DestoryList(&L):其作用是销毁当前的线性表L; ●ClearList(&L):清空线性表L,使之成为空表; ●ListLength(L):返回线性表L的长度,即线性表中数据元素的个数; ●ListEmpty(L) :判断线性表L是否为空表,是则返回True,否则返回False; ●GetElem(L,i,&e):将线性表L中第i个数据元素的值返回到变量e中;

第2章 线性表

《数据结构》 第2章线性表 共55题 一、单选 1. (1)分题目ID号:10545 题目难度:容易 在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤i十1)位量插入一个新元素时,需要从后向前依次后移【1】个元素。 A. n—i B. n—i十1 C. n一i一 1 D. i 题目答案:B 2. (1)分题目ID号:10546 题目难度:容易 线性表是【1】。 A. 一个有限序列,可以为空 B. 一个有限序列,不能为空 C. 一个无限序列,可以为空 D. 一个无序序列,不能为空题目答案:A 3. (1)分题目ID号:10548 题目难度:容易 在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为【1】 A. (n十1)/2 B. n/2 C. n D. n十l 题目答案:C 4. (1)分题目ID号:10549 题目难度:容易 在一个顺序表的表尾插入一个元素的时间复杂度的量级为【1】 A. ○(n) B. ○(1) C. ○(n*n) D. ○(lbn)题目答案:B 5. (1)分题目ID号:10550 题目难度:容易 单链表的存储密度为【1】 A. 大于1 B. 等于1 C. 小于1 D. 不能确定 题目答案:C 题目分析:存储密度=单链表数据项所占空间/结点所占空间 结点所占空间由数据项所占空间和存放后继结点地址的链域,所以,存储密度小于1 。 6. (4)分题目ID号:10551 题目难度:难 设单链表中指针p指向结点ai,指针q指着将要插入的新结点x,问: [1] 当x插在链表中两个数据元素ai和ai+1之间时,只要先修改【1】后修改【2】 即可。 A.p一>next=q B.p一>next=p 一>next->next

数据结构第2章 线性表 教案

第2章线性表 本章主要内容: 1、线性表的概念、特点、及其基本操作定义 2、线性表的顺序存储结构及其算法实现 3、线性表的链式存储结构及其算法实现 4、循环链表及其线性表的应用 本章重点难点: 1、线性表的存储结构及算法实现。 2、链式存储结构及算法实现。 3、循环链表 2.1 线性表的定义和基本操作 2.1.1 线性表的定义及特点 1.线性表的定义 线性表是由n(n≥0)个类型相同的数据元素组成的有限序列。n表示线性表中数据元素的个数,称为线性表的长度(简称表长)。当n=0时,线性表为空,称为空线性表。 线性表的逻辑结构通常用数学中的向量形式表示: L=( a 1,a 2 ,...,a i-1 ,a i ,a i+1 ,...,a n ) 或者 L=( a 0,a 1 ,...,a i-1 ,a i ,a i+1 ,...,a n-1 ) 其中:L为线性表名称,习惯用大写书写;a i 为组成该线性表的数据元素,元素的数据类型可以是可以表示出的任何类型。 例 1:分析下列线性表的数据类型: La=(34,89,765,12,90,-34,22);

Lb=(January, February,March,April,May,June,July,August,September,October,November,December,World, China,Welcome); Lc=(stu1,stu2,...,stu50) ;其中,数据元素stui的数据类型为: struct student{ char Num; //学号 char *name; //姓名 }; 2、线性表的特点。 除第一个元素外,每个元素有且仅有唯一一个直接前驱,第一个元素无直接前驱,除最后一个元素外,每个元素有且仅有唯一一个直接后继,最后一个元素无直接后继。1-1这种次序描述了元素之间的 1 对 1关系。此外,我们所研究的线性表的元素个数是有限的,各元素的数据类型是相同德,且数据元素可以是任意类型。 2.1.2、线性表的基本操作 (1)初始化线性表L InitList(L) (2)清空线性表L ClearList(L) (3)求线性表L的长度 ListLength(L) (4)判断线性表L是否为空 IsEmpty(L) (5)获取线性表L中的某个数据元素内容 GetElem(L,i,e) (6)查找值为e的数据元素 LocateELem(L,e) (7)返回线性表L中e的直接前驱元素 PriorElem(L,e) (8)返回线性表L中e的直接后继元素 NextElem(L,e) (9)在线性表L中插入一个数据元素 ListInsert(L,i,e) (10)删除线性表L中第i个数据元素 ListDelete(L,i,e)

第二章_线性表(参考答案)

第二章线性表 一、填空题 1、数据逻辑结构包括线性结构、树型结构、图型结构这三种类型,树形结构和图形结构合称为非线性结构。 2、在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有个前驱结点,最后一个结点没有后续结点,其余每个结点有且只有一个后续结点。 3、在顺序表中插入或删除一个元素,需要平均移动一半元素,具体移动的元素个数与插入或删除的位置有关。 4、在顺序表中,逻辑上相邻的元素,其物理位置一定相邻。在单链表中,逻辑上相邻的元素,其物理位置不一定相邻。 5、在带头结点的非空单链表中,头结点的存储位置由头指针指示,首元素结点的存储位置由头结点的next域指示,除首元素结点外,其它任一元素结点的存储位置由其直接前趋结点的next域指示。 6、阅读下列算法,并补充所缺内容。 void purge_linkst( ListNode *& la ) { // 从头指针为 la 的有序链表中删除所有值相同的多余元素,并释放被删结点空间ListNode *p,*q; if(la==NULL) return; q=la; p = la->link; while (p) { if (p && ___(1)p->data!=q->data___) {q=p; p = p->link;} else { q->link= ___(2)p->link___; delete(p); p=___(3)q->link___; } }//while }// purge_linkst 二、选择题 1、在数据结构中,从逻辑上可以把数据结构分成 C。 A、动态结构和静态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 2、线性表的逻辑顺序与存储顺序总是一致的,这种说法 B。 A、正确 B、不正确 3、线性表若采用链式存储结构时,要求内存中可用存储单元的地址D。 A、必须是连续的 B、部分地址必须是连续的 C、一定是不连续的 D、连续或不连续都可以 4、在以下的述叙中,正确的是B。 A、线性表的线性存储结构优于链表存储结构 B、二维数组是其数据元素为线性表的线性表 C、栈的操作是先进先出 D、队列的操作方式是先进后出 三、综合题 1、已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。 A、在P结点后插入S结点的语句序列是((4)、(1)); B、在P结点前插入S结点的语句序列是((7)、(11)、(8)、(4)、(1)); C、在表首插入S结点的语句序列是((5)、(12));

第二章线性表

第二章线性表

第二章线性表 一、选择题 1.线性表是具有n个__C___的有限序列(n>0)。 A.表元素B.字符C.数据元素D.数据项2.一个顺序表所占用的存储空间大小与___B___无关。A.表的长度C.元素的类型 B.元素的存放顺序 D.元素中各字段的类型 3.线性表的顺序存储结构是一种__A___。A.随机存取的存储方式C.索引存取的存储方式 B.顺序存取的存储方式D.Hash存取的存储方式 4. 若线性表采用顺序存储结构,每个元素占用4 个存储单元,第一个元素的存储地址为100,则第12 个元素的存储地址是__B____。A.112 B.144 C.148 D.412 5. 线性表是__A____。 A.一个有限序列,可以为空B.一个有限序列,不能为空C.一个无限序列,可以为空D.一个无限序列,不能为空 6.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为__C____。A.O(n)O(n)B.O(n)O

(1)C.O(1)O(n)D.O(1)O(1) 7.若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,首先需要移动表中___A____中数据元素。 A.n-i B.n+i C.n-i+1 D.n-i-1 8.对顺序存储的线性表,设其长度为n,在任何位置插入或删除操作都是等概率的。删除一个元素时平均要移动表中的____C____个元素。A.n/2 B.(n+1)/2 C.(n-1)/2 D.n 9.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为__C____。(1≤i≤n+1) A.O(0)B.O(1)C.O(n)D.O(n2)10.线性表中各链接点之间的地址___C____。A.必须连续 B.部分地址必须连续 C.不一定连续D.连续与否无所谓 11.在n个结点的线性表的数组表示中,算法的时间复杂度是O(1)的操作是_A______。 A.访问第i个结点后插入一个新结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) B.在第i个结点后插入一个新结点(1≤i≤n)C.删除第i 个结点(1≤i≤n)D.以上都不对 12.单链表中,增加一个头结点的目的是为了____C_____。

数据结构(C++版)课后答案 (王红梅)第2章 线性表

第 2 章线性表 课后习题讲解 1. 填空 ⑴在顺序表中,等概率情况下,插入和删除一个元素平均需移动()个元素,具体移动元素的个数与()和()有关。 【解答】表长的一半,表长,该元素在表中的位置 ⑵顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是()。【解答】108 【分析】第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108 ⑶设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为()。 【解答】p->next=(p->next)->next ⑷单链表中设置头结点的作用是()。 【解答】为了运算方便 【分析】例如在插入和删除操作时不必对表头的情况进行特殊处理。 ⑸非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足()。 【解答】p->next=head 【分析】如图2-8所示。 ⑹在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是();删除开始结点的操作序列为()。 【解答】s->next =rear->next; rear->next =s; rear =s; q=rear->next->next; rear->next->next=q->next; delete q; 【分析】操作示意图如图2-9所示:

⑺一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为();在给定值为x的结点后插入一个新结点的时间复杂度为()。 【解答】Ο(1),Ο(n) 【分析】在p所指结点后插入一个新结点只需修改指针,所以时间复杂度为Ο(1);而在给定值为x的结点后插入一个新结点需要先查找值为x的结点,所以时间复杂度为Ο(n)。 ⑻可由一个尾指针唯一确定的链表有()、()、()。 【解答】循环链表,循环双链表,双链表 2. 选择题 ⑴线性表的顺序存储结构是一种()的存储结构,线性表的链接存储结构是一种()的存储结构。 A 随机存取 B 顺序存取 C 索引存取 D 散列存取 【解答】A,B 【分析】参见2.2.1。 ⑵线性表采用链接存储时,其地址()。 A 必须是连续的 B 部分地址必须是连续的 C 一定是不连续的 D 连续与否均可以 【解答】D 【分析】线性表的链接存储是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以连续,也可以不连续,甚至可以零散分布在内存中任意位置。 ⑶单循环链表的主要优点是()。 A 不再需要头指针了 B 从表中任一结点出发都能扫描到整个链表; C 已知某个结点的位置后,能够容易找到它的直接前趋; D 在进行插入、删除操作时,能更好地保证链表不断开。 【解答】B ⑷链表不具有的特点是()。 A 可随机访问任一元素 B 插入、删除不需要移动元素 C 不必事先估计存储空间 D 所需空间与线性表长度成正比 【解答】A ⑸若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋,则采用()存储方法最节省时间。 A 顺序表 B 单链表 C 双链表 D 单循环链表 【解答】A 【分析】线性表中最常用的操作是取第i 个元素,所以,应选择随机存取结构即顺序表,同时在顺序表中查找第i个元素的前趋也很方便。单链表和单循环链表既不能实现随机存取,查找第i个元素的前趋也不方便,双链表虽然能快速查找第i个元素的前趋,但不能实现随机存取。 ⑹若链表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则采用()存储方法最节省时间。 A 单链表 B 带头指针的单循环链表 C 双链表 D 带尾指针的单循环链表

《数据结构》第二章线性表习题及参考答案

《数据结构》 第二章线性表习题 一、单项选择题 1. 线性表是________。 A.一个有限序列,可以为空B.一个有限序列,不可以为空 C.一个无限序列,可以为空D.一个无限序列,不可以为空 2. 在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动个元素。 A.n-i B.n-i+l C.n-i-1 D.i 3. 线性表采用链式存储时,其地址________。 A.必须是连续的B.一定是不连续的 C.部分地址必须是连续的D.连续与否均可以 4. 从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较________个元素结点。 A.n/2 B.n C.(n+1)/2 D.(n-1)/2 5. 在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是____。 A. p->next=s; s->prior=p; p->next->prior=s; s->next=p->next; B. s->prior=p; s->next=p->next; p->next=s; p->next->prior=s; C. p->next=s; p->next->prior=s; s->prior=p; s->next=p->next; D. s->prior=p; s->next=p->next; p->next->prior=s; p->next=s; 6. 设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为________。A.p->next=p->next->next; B.p=p->next; C.p=p->next->next; D.p->next=p; 7. 在一个长度为n的顺序表中向第i个元素(0< inext=p->next; p->next=s B.q->next=s; s->next=p C.p->next=s->next; s->next=p D.p->next=s; s->next=q 9. 以下关于线性表的说法不正确的是______。 A.线性表中的数据元素可以是数字、字符、记录等不同类型。 B.线性表中包含的数据元素个数不是任意的。 C.线性表中的每个结点都有且只有一个直接前趋和直接后继。 D.存在这样的线性表:表中各结点都没有直接前趋和直接后继。

数据结构 第2章 线性表

一、填空题 1.在一个单链表中结点p所指结点之后插入一个s所指结点时,应执行s->next= 和p->next= 的操作。 2.在双链表中,每个结点有两个指针域,一个指向,另一个指向。 3.在一个长度为n的单链表L中,删除链表中*p的前驱结点的时间复杂度为。 二、选择题 1.线性表若采用链式存储结构时,要求内存中可用存储单元的地址。 A.必须是连续的B.部分地址必须是连续的 C.一定是不连续的D.连续不连续都可以 2.带头结点的单链表head为空的判定条件是。 A.head= =NULL B.head->next= =NULL C.head->next= =head D.head!=NULL 3.非空的循环单链表head的尾结点(由p所指向)满足。 A.p->next==NULL B.p==NULL C.p->next==head D.p==head 4.线性表的顺序存储结构是一种的存储结构 A.随机存取B.非随机存取 C.只能在一端进行插入和删除D.一端进行插入另一端进行删除 5.表达式a*(b+c)-d的后缀表达式是。 A.abcdd+- B.abc*+d- C.abc+*d- D.-+*abcd 6.线性表若采用链式存储结构时,要求内存中可用存储单元的地址。 A.必须是连续的B.部分地址必须是连续的 C.一定是不连续的D.连续与不连续都可以 7.在一个无头结点的单链表中,在p指针所指结点之后插入s所指结点,则执行。 A.s->next=p->next;p->next=s; B.s->next=p;p->next=s; C.s->next=p->next;p=s; D.p->next=s;s->next=p; 8.在一个单链表中,若删除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; 9.不带头结点的单链表head为空的判定条件是。 A.head!==NULL B.head->next==head C.head->next==NULL D.head==NULL 10.表达式(a+b)*(c-d)的后缀表达式是。 A.abcd+-* B.abc+*d- C.abc+d-* D.ab+cd-* 11.在一个有头结点的单链表head的表头插入一个s所指结点,则执行。 A.s->next=head->next;head->next=s; B.s->next=head;head->next=s; C.s->next=head->next;head=s; D.head->next=s;s->next=head; 12.在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是( ) A.p=p->next; B.p->next=p->next->next; C.p->next=p; D.p=p->next->next; 13.线性表的链接存储结构与顺序存储结构相比,优点是。 A.所有的操作算法实现简单B.便于随机存取

《数据结构及其应用》笔记含答案 第二章_线性表

第2章线性表 一、填空题 1、线性结构反映结点间的逻辑关系是一对一的。 2、线性结构的特点: 1)只有一个首结点和尾结点 2)除首尾结点外,其他结点只有一个直接前驱和一个直接后继 3、线性表的顺序表示又称为顺序存储结构。 4、结点只有一个指针域的链表,称为单链表。 5、首尾相接的链表称为循环链表。 6、线性表的链式表示又称为非顺序映像。 7、指向链表中第一个结点的指针称为头指针。 8、链表中存储第一个数据元素的结点称为首元结点。 二、判断题 1、线性表的逻辑顺序与存储顺序总是一致的。(╳) 2、顺序存储的线性表可以按序号随机存取。(√) 3、顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。(╳) 4、线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。(√) 5、在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。(╳) 6、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。(√) 7、线性表的链式存储结构优于顺序存储结构。(╳) 8、在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。(√) 9、线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。(√) 10、在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。(╳) 11、线性表的特点是每个元素都有一个前驱和一个后继。(╳) 三、单项选择题 1、顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(B)。 A.110 B.108 C.100 D.120 解释:顺序表中的数据连续存储,所以第5个元素的地址为:100+2*4=108。 2、在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是(A)。 A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) B.在第i个结点后插入一个新结点(1≤i≤n) C.删除第i个结点(1≤i≤n) D.将n个结点从小到大排序 解释:在顺序表中插入一个结点的时间复杂度都是O(n2),排序的时间复杂度为O(n2)或O(nlog2n)。顺序表是一种随机存取结构,访问第i个结点和求第i个结点的直接前驱都可以直接通过数组的下标直接定位,时间复杂度是O(1)。

数据结构线性表

数据结构---线性表 线性表 代码主要参考严蔚敏《数据结构(c语言版)》,有部分改动 线性表的定义 定义 •线性表是具有相同的数据类型的n(n >= 0)个数据元素的有限序列,当n=0时线性表为一个空表 •用L表示线性表则L = (a1,a2,a3,…,an o a1为表头元素,an为表尾元素 o a1无直接前驱,an无直接后继 特点 •表中元素个数有限 •表中元素具有逻辑上的顺序,表中元素有先后次序 •表中元素都是数据元素 •表中元素的数据类型都相同,每个元素占的空间大小一致 要点 数据项、数据元素、线性表的关系 线性表由若干个数据元素组成,而数据元素又由若干个数据项组成,数据项是数据的不可分割的最小单位。

其中姓名,学号等就是数据项 线性表的顺序表示 顺序表的定义 顺序表是指用一组地址连续的存储单元依次存储信息表中的数据元素,从而使得逻辑相邻的两个元素在物理位置上也相邻 预先定义(为了代码可以运行) #define True 1 #define False 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; 第n个元素的内存地址表示为 LOC(A) + (n-1)*sizeof(ElemType) 假定线性表的元素类型为ElemType,则线性表的顺序存储类型描述为 typedef int ElemType ;#define MaxSize 50typedef struct{ ElemType data[MaxSize]; int length;}SqList; 一维数组可以是静态分配的,也可以是动态分配的。静态分配后大小和空间都固定了,下面使用动态分配的形式 typedef int ElemType ;#define InitSize 100 //表长度的初始大小定义#define ListIncreasement 10 //线性表存储空间的分配增量typedef struct{ ElemType *data; int MaxSize,length;}SeqList;

数据结构第二章线性表

数据结构第二章线性表 基本信息:[矩阵文本题] * 1. 在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为 [单选题] * A.n-i+1(正确答案) B.n-i C.i D.i-1 2. 若一个顺序表中第一个元素的存储地址为1000,每个元素占4个地址单元,那么,第6个元素的存储地址应是 [单选题] * A.1020(正确答案) B.1010 C.1016 D.1024 3. 带头结点的单链表(以head为头指针)为空的判断条件是 [单选题] *

A.head!=NULL B.head->next==head C.head->next==NULL(正确答案) D.head ==NULL 4. 将长度为n的单链表连接在长度为m的单链表之后,其算法的时间复杂度为 [单选题] * A.O(1) B.O(m)(正确答案) C.O(n) D.O(m+n) 5. 在一个单链表中,若删除p指向结点的后继结点,则执行的操作为 [单选题] * A.q=p->next;p->next=p->next->next;free(q);(正确答案) B.p=p->next;q=p->next;p=q->next;free(q); C.q=p->next->next;p=p->next;free(q); D.p=p->next->next;q=p->next;free(q); 6. 线性表是一个有限序列,组成线性表的基本单位是 [单选题] * A.数据项 B.数据元素(正确答案) C.数据域

D.字符 7. 顺序表便于 [单选题] * A.插入结点 B.删除结点 C.按值查找结点 D.按序号查找结点(正确答案) 8. 对需要频繁插入和删除结点的线性表,适合的存储方式是 [单选题] * A.顺序储存 B.链式存储(正确答案) C.索引存储 D.散列存储 9. 设带头结点的单循环链表的头指针为head,指针变量p指向尾结点的条件是 [单选题] * A.p->next->next==head B.p->next==head(正确答案) C.p->next->next==NULL D.p->next==NULL 10. 针对线性表逻辑上相邻的两个元素,下列叙述中,正确的是 [单选题] * A.采用顺序存储时一定相邻,采用链式存储时也一定相邻

数据结构第二章线性表1答案

数据结构第二章线性表1答案 第二部分线性表 一、选择题 1.关于顺序存储的叙述中,哪一条是不正确的( B ) A.存储密度大 B.逻辑上相邻的结点物理上不必邻接 C.可以通过计算直接确定第i个结点的位置 D.插入、删除操作不方便 2.长度为n的单链表连接在长度为m的单链表后的算法的时间复杂度为( C ) A O(n) B O(1) C O(m) D O(m+n) 3.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:( A ) A 访问第i个结点(1<=i<=n)和求第i个结点的直接前趋(2<=i<=n) B 在第i个结点(1<=i<=n)后插入一个新结点 C 删除第i个结点(1<=i<=n) D 将n个结点从小到大排序 4.一个向量第一个元素的存储地址是100 ,每个元素的长度为2 ,则第5 个元素的地址是:( B ) (A )110 ( B )108 (C )100 (D )120 5.已知一个顺序存储的线性表,设每个结点需要占m个存储单元,若第一个结点的地址为da,则第i个结点的地址为:( A ) A)da+(i-1)*m B) da+i*m C) da-i*m D) da+(i+1)*m 6.在具有n个结点的单链表中,实现(A )的操作,其算法的时间复杂度为O(n)。

A)遍历链表和求链表的第i个结点B)在地址为p的结点之后插入一个结点 C)删除开始结点D)删除地址为p的结点的后继结点 7.链表是一种采用(B )存储结构存储的线性表。 (A )顺序(B )链式( C )星式(D )网状 8.线性表若采用链式存储结构时,要求内存中可用存储单元的地址:(D )(A )必须是连续的( B )部分地址必须是连续的(C )一定是不连续的( D )连续或不连续都可以 9.线性表L在(B )情况下适用于使用链式结构实现。 (A)需经常修改L中的结点值(B)需不断对L进行删除插入(C)L中含有大量的结点(D)L中结点结构复杂 10.在长度为n 的顺序表的第i (1≤i≤n+1) 个位置上插入一个元素,元素的移动次数为( A ) A.n-i+1 B.n-i C.i D.i-1 11.线性表是(A)。 a、一个有限系列,可以为空 b、一个有限系列,不能为空 c、一个无限系列,可以为空 d、一个无限系列,不能为空 12. (A)线性表。 A.(孔子,诸葛亮,曹雪芹) B.{A,B,C,D} C.{10,11,12,13,14} D.(1,2,3,...) 13. ()是表示线性数据结构的。 A.循环链表 B.邻接多重表

数据结构第2章线性表习题及答案

第2章自测卷答案 一、填空 1. 【严题集 2.2①】在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。 2. 线性表中结点的集合是有限的,结点间的关系是一对一的。 3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1 个元素。 4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i 个元素。 5. 在顺序表中访问任意一结点的时间复杂度均为O(1),因此,顺序表也称为随机存取的数据结构。 6. 【严题集2.2①】顺序表中逻辑上相邻的元素的物理位置必定相邻。单链表中逻辑上相邻的元素的物理位置不一定相邻。 7. 【严题集2.2①】在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点的链域的值指示。 8.在n个结点的单链表中要删除已知结点*p,需找到它的前驱结点的地址,其时间复杂度为O(n)。二、判断正误(在正确的说法后面打勾,反之打叉) (×)1. 链表的每个结点中都恰好包含一个指针。 答:错误。链表中的结点可含多个指针域,分别存放多个指针。例如,双向链表中的结点可以含有两个指针 域,分别存放指向其直接前趋和直接后继结点的指针。 (×)2. 链表的物理存储结构具有同链表一样的顺序。错,链表的存储结构特点是无序,而链表的示意图有序。(×)3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。错,链表的结点不会移动,只是指针内容改变。 (×)4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 错,混淆了逻辑结构与物理结构,链表也是线性表!且即使是顺序表,也能存放记录型数据。 (×)5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 错,正好说反了。顺序表才适合随机存取,链表恰恰适于“顺藤摸瓜” (×)6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 错,前一半正确,但后一半说法错误,那是链式存储的优点。顺序存储方式插入、删除运算效率较低, 在表长为n的顺序表中,插入和删除一个数据元素,平均需移动表长一半个数的数据元素。 (×)7. 线性表在物理存储空间中也一定是连续的。 错,线性表有两种存储方式,顺序存储和链式存储。后者不要求连续存放。 (×)8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。 错误。线性表有两种存储方式,在顺序存储时,逻辑上相邻的元素在存储的物理位置次序上也相邻。(×)9. 顺序存储方式只能用于存储线性结构。 错误。顺序存储方式不仅能用于存储线性结构,还可以用来存放非线性结构,例如完全二叉树是属于 非线性结构,但其最佳存储方式是顺序存储方式。(后一节介绍) (×)10. 线性表的逻辑顺序与存储顺序总是一致的。 错,理由同7。链式存储就无需一致。 三、单项选择题 (C)1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构( B )2.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(A)110 (B)108 (C)100 (D)120 ( A )3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是: (A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) (B)在第i个结点后插入一个新结点(1≤i≤n)

数据结构 第二章:线性表

第二章线性表:习题 习题 一、选择题 1.L是线性表,已知Length(L)的值是5,经运算?Delete(L,2)后,length(L)的值是( c)。 A.5 B.0 C.4 D.6 2.线性表中,只有一个直接前驱和一个直接后继的是( )。 A.首元素 B.尾元素 C.中间的元素 D.所有的元素 +3.带头结点的单链表为空的判定条件是( )。 A. head= =NULL B. head->next= =NULL C. head->next=head D. head!=NULL 4.不带头结点的单链表head为空的判定条件是( )。 A. head=NULL B. head->next =NULL C.head->next=head D. head!=NULL 5.非空的循环单链表head的尾结点P满足()。 A. p->next = =NULL B. p=NULL C. p->next==head D. p= =head 6.线性表中各元素之间的关系是( c)关系。 A.层次 B.网状C.有序 D.集合 7.在循环链表的一个结点中有()个指针。 A.1B.2 C. 0 D. 3 8.在单链表的一个结点中有()个指针。 A.1B.2 C. 0 D. 3 9.在双链表的一个结点中有()个指针。 A.1B.2 C. 0 D. 3 10.在一个单链表中,若删除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; 11.指针P指向循环链表L的首元素的条件是()。 A.P= =L B. P->next= =L C. L->next=P D. P-> next= =NU LL 12. 在一个单链表中,若在p所指结点之后插入s所指结点,则执行()。 A.s->next=p; p->next=s; B. s->next=p->next; p->next=s; C. s->next=p->next; p=s; D. p->next=s; s->next=p;

相关主题
文本预览
相关文档 最新文档