第2章 数据结构

合集下载

数据结构第二章课后答案

数据结构第二章课后答案

数据结构第二章课后答案数据结构第二章课后答案1. 线性表1.1 数组实现线性表Q1. 请说明线性表的定义,并结合数组实现线性表的特点进行解释。

线性表是由n(n≥0)个数据元素构成的有序序列,其中n表示线性表的长度。

数组实现线性表的特点是使用一组具有相同数据类型的连续存储空间存储线性表中的元素,通过下标访问和操作元素。

A1. 线性表的定义指出,线性表是由若干个数据元素组成的有序序列。

具体地,在数组实现线性表中,我们将元素存储在一组连续的内存空间中,通过下标访问和操作元素。

由于数组的存储空间具有连续性,这样的实现方式可以在O(1)的时间复杂度下进行元素的访问和修改操作。

1.2 链表实现线性表Q2. 请说明链表实现线性表的特点,并与数组实现进行比较。

链表实现线性表的特点是通过指针将线性表中的元素按照节点的形式连接起来,每个节点包含了存储的元素和指向下一个节点的指针。

与数组实现相比,链表的插入和删除操作更为高效,但是访问某个位置的元素需要从头开始遍历,时间复杂度较大。

A2. 链表实现线性表的特点是通过使用节点和指针将线性表中的元素连接起来。

每个节点中包含了一个存储的元素和指向下一个节点的指针。

链表的插入和删除操作的时间复杂度为O(1),因为只需要改变指针的指向即可。

但是,访问某个位置的元素需要从头开始遍历链表,所以时间复杂度为O(n)。

2. 栈和队列2.1 栈的定义和基本操作Q3. 请给出栈的定义和基本操作。

栈是一种特殊的线性表,它只能在表的一端进行插入和删除操作,该端称为栈顶。

栈的基本操作包括入栈(push)和出栈(pop),分别用于将元素压入栈和将栈顶元素弹出。

A3. 栈是一种特殊的线性表,它只能在表的一端进行插入和删除操作。

这个特定的一端称为栈顶,而另一端称为栈底。

栈的基本操作包括入栈(push)和出栈(pop)。

入栈操作将一个元素压入栈顶,出栈操作将栈顶元素弹出。

2.2 队列的定义和基本操作Q4. 请给出队列的定义和基本操作。

数据结构课后习题及解析第二章

数据结构课后习题及解析第二章
利用单向循环链表作为存储结构模拟此过程,按照出列顺序打印出各人的编号。
例如m的初值为20;n=7,7个人的密码依次是:3,1,7,2,4,8,4,出列的顺序为6,1,4,7,2,3,5。
第二章答案
约瑟夫环问题
约瑟夫问题的一种描述为:编号1,2,…,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个报数上限值m,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个程序,求出出列顺序。利用单向循环链表作为存储结构模拟此过程,按照出列顺序打印出各人的编号。
9.假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表某个结点的指针,试编写算法在链表中删除指针s所指结点的前趋结点。
10.已知有单链表表示的线性表中含有三类字符的数据元素(如字母字符、数字字符和其它字符),试编写算法来构造三个以循环链表表示的线性表,使每个表中只含同一类的字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。
r=p;
}
}
r->next=L->next;
printf("请输入第一个报数上限值m(m>0):");
scanf("%d",&m);
printf("*****************************************\n");
printf("出列的顺序为:\n");
q=L;
p=L->next;
7.试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1, a2..., an)逆置为(an, an-1,..., a1)。

数据结构第二章习题(1)

数据结构第二章习题(1)

B. 单链表
C. 双链表
D. 单循环链表
3.具有线性结构的数据结构是( )。
A. 图
B. 树
C. 广义表
D. 栈
4.在一个长度为 n 的顺序表中,在第 i 个元素之前插入一个新元素时,需向后移动( )
个元素。
A. n-i
B. n-i+1
C. n-i-1
5.非空的循环单链表 head 的尾结点 p 满足( )。
A. n-i
B. n-i+1
C. n-i-1
D. i+1
10.线性表是n个( )的有限序列。
A. 表元素
B. 字符 C. 数据元素 D. 数据项
11.从表中任一结点出发,都能扫描整个表的是( )。
A. 单链表
B. 顺序表
C. 循环链表
D. 静态链表
12.在具有n个结点的单链表上查找值为x的元素时,其时间复杂度为( )。
A. q->next=s->next;s->next=p; B. s->next=p;q->next=s->next;
C. p->next=s->next;s->next=q; D. s->next=q;p->next=s->next; 24.在以下的叙述中,正确的是( )。
A. 线性表的顺序存储结构优于链表存储结构 B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况
A. p->next=p->next->next;
B. p=p->next;p->next=p->next->next;
C. p =p->next;

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

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

7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。

则采用()存储方式最节省运算时间。

【北京理工大学 2000 一、1(2分)】A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表8. 静态链表中指针表示的是(). 【北京理工大学 2001 六、2(2分)】A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址9. 链表不具有的特点是()【福州大学 1998 一、8 (2分)】A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比10. 下面的叙述不正确的是()【南京理工大学 1996 一、10(2分)】A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关11. 线性表的表元存储方式有((1))和链接两种。

试指出下列各表中使用的是何种存储方式:表1是((2))存储方式;表2是((3))存储方式;表3是((4))存储方式;表4是((5))存储方式。

表左的s指向起始表元。

供选择的答案:A.连续B.单向链接C.双向链接D.不连接E.循环链接F.树状G.网状H.随机I.顺序J.顺序循环【上海海运学院 1995 二、1(5分)】12.(1) 静态链表既有顺序存储的优点,又有动态链表的优点。

所以,它存取表中第i个元素的时间与i无关。

(2) 静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。

(3) 静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。

以上错误的是()【南京理工大学 2000 一、3(1.5分)】A.(1),(2) B.(1) C.(1),(2),(3) D.(2)13. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1Rlink=p;p->Llink->Rlink=q;q->Llink=q;B. p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;C. q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;D. q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;24.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:()。

《数据结构》课程课件第二章线性表

《数据结构》课程课件第二章线性表

Step2:数据域赋值
插入后: Step3:插入(连接)
X q
(1)式和(2)式的顺序颠倒,可以吗?
4、插入元素(在第i个元素之前插入元素e)
为什么时间复杂度不再是O(1)?
第i-1个元素
第i个元素
p
s
新插入元素
5、删除p所指元素的后继元素
P
删除前:
P->next P->next->next
删除:
五、线性表ADT的应用举例
Void mergelist(list La,list Lb,list &Lc)
{ //已知线性表La和Lb中的数据元素按值非递减排列
//归并La和Lb得到新的线性表Lc,Lc中的元素也按值非递减排列
例: 将两个各有n个元素的有序表归并成一个有序表, 其最小的比较次数是( )。 A、n B、2n-1 C、2n D、n-1
三、线性表的ADT
四、线性表的分类
五、线性表ADT的应用举例
例1:已知有线性表L,要求删除所有X的出现
五、线性表ADT的应用举例
例2: 已知有两个分别有序的线性表(从小到大),要 求合并两个线性表,且合并后仍然有序。——归并 方法1: 合并,再排序O((m+n)2)
方法2: 归并,利用分别有序的特点O((m+n))
二、线性表上常见的运算
8、删除 Delete(L,i):删除线性表的第i个元素 删除前 a1 a2 … ai-1 ai ai+1 … an 删除后 a1 a2 … ai-1 ai+1 … an 9、判断是否为空 Empty(L):线性表空,则返回TRUE, 否则FALSE 10、输出线性表 Print(L):输出线性表的各个元素 11、其它操作 复制、分解、合并、分类等

数据结构第2章典型例题解析

数据结构第2章典型例题解析

第2章线性表典型例题解析一、选择题1.线性表是具有n个(n≥0)的有限序列。

A.表元素B.字符C.数据元素D.数据项【分析】线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,通常记为(a1,a2,…,a n),其中n为表长,n=0时称为空表。

【答案】C2.顺序存储结构的优点是。

A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示【分析】顺序存储结构是采用一组地址连续的存储单元来依次存放数据元素,数据元素的逻辑顺序和物理次序一致。

因此,其存储密度大。

【答案】A3.带头结点的单链表head为空的判断条件是。

A.head==NULL B.head->next==NULLC.head->next==head D.head!=NULL【分析】链表为空时,头结点的指针域为空。

【答案】B4.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表【分析】根据题意要求,该线性表的存储应能够很方便地找到线性表的第一个元素和最后一个元素,A和B都能很方便地通过头指针找到线性表的第一个元素,却要经过所有元素才能找到最后一个元素;选项C双链表若存为双向循环链表,则能很方便地找到线性表的第一个元素和最后一个元素,但存储效率要低些,插入和删除操作也略微复杂;选项D可通过尾指针直接找到线性表的最后一个元素,通过线性表的最后一个元素的循环指针就能很方便地找到第一个元素。

【答案】D5.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用存储方式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表【分析】某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算。

因此不需要移动线性表种元素的位置。

根据题意要求,该线性表的存储应能够很方便地找到线性表的任一指定序号的元素和最后一个元素,顺序表是由地址连续的向量实现的,因此具有按序号随机访问的特点。

《数据结构》课件

《数据结构》课件

第二章 线性表
1
线性表的顺序存储结构
2
线性表的顺序存储结构使用数组来存储元素,
可以快速随机访问元素。
3
线性表的常见操作
4
线性表支持常见的操作,包括插入、删除、 查找等,可以灵活地操作其中的元素。
线性表的定义和实现
线性表是一种数据结构,它包含一组有序的 元素,可以通过数组和链表来实现。
线性表的链式存储结构
线性表的链式存储结构使用链表来存储元素, 支持动态扩展和插入删除操作。
第三章 栈与队列
栈的定义和实现
栈是一种特殊的线性表,只能在一 端进行插入和删除操作,遵循后进 先出的原则。
队列的定义和实现
队列是一种特殊的线性表,只能在 一端进行插入操作,在另一端进行 删除操作,遵循先进先出的原则。
栈和队列的应用场景和操作
哈希表是一种高效的查找数据结构, 通过哈希函数将关键字映射到数组 中,实现快速查找。
排序算法包括冒泡排序、插入排序 和快速排序等,可以根据数据规模 和性能要求选择合适的算法。
结语
数据结构的学习心得 总结
学习数据结构需要掌握基本概念 和常见操作,通过实践和练习加 深理解和熟练度。
下一步学习计划的安 排
在掌握基本数据结构的基础上, 可以进一步学习高级数据结构和 算法,提升编程技能。
相关学习资源推荐
推荐一些经典的数据结构教材和 在线学习资源,如《算法导论》 和LeetCode等。
栈和队列在计算机科学中有许多应 用,如函数调用、表达式求值和作 业调度等。
第四章 树与二叉树
树的定义和性质
树是由节点和边组成的一种非线性数据结构,每个 节点可以有多个子节点。
二叉树的遍历方式
二叉树的遍历方式包括前序遍历、中序遍历和后序 遍历,可以按不同顺序输出节点的值。

数据结构 第2章 线性表

数据结构 第2章 线性表
插入删除不再需要移动元素 而是需要修改元素间的关系
123456
1 3
2 5
4
6
8
整理ppt
06/03/2021
线性表链式结构的存储示意
假设我们有一个线性表(a1,a2,…,an)
数据信息
结点
指针
……
ai 0500
数据域 指针域
图a:链表中的相邻元素
……
ai+1 0800
地址0500
头指针
第一个结点
12
整理ppt
06/03/2021
实现读取单链表第i个元素的代码
/* 初始条件:链式线性表L已存在,0 < i < ListLength(L)+1 */ /* 操作结果:用 e 返回 L 中第 i 个数据元素的值 */
1. Status GetElem (LinkList L, int i, ElemType *e)
2. { /* 参数 L 是待操作的链表,其实也是头结点 */
3.
int j;
4.
Node *p;
/* 声明一结点指针p */
5.
p = L->next;
/* 让p指向链表L的第一个结点 */
6.
j = 1;
/* j为计数器 */
7.
while (p && j<i) /* p不为空或者计数器j还没有等于i时,循环继续 */
8.
{
9.
p = p->next; /* 让p指向下一个结点 */
10.
++j;
11.
}
12. if (!p || j>i)
13.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、算法
2、算法的描述: 1)流程图 2)伪代码——类似程序设计语言
3、算法的基本结构 ——算法代码化的过程: 1)顺序结构 2)分支结构 3)循环结构
一、算法
算法的时间复杂度是指( )。
A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数
第2章 数据结构
۩ 算法 ۩ 数据结构概述 ۩ 线性结构 ۩ 栈和队列 ۩树 ۩图
第2章 数据结构
数据结构是讨论非数值类问题的 对象描述、信息组织方法及其相应的 操作。
数据结构的研究内容
电子计算机的主要用途: 早期: 主要用于数值计算。
数学模型→选择计算机语言→编出程序→测试→最终解答
后来: 处理逐渐扩大到非数值计算领域
一、算法
算法的空间复杂度是指( )。
A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中的所需要的存储空间
一、算法
4、算法效率衡量方法与准则 :
时间复杂度:Windows程序设计中,指执行时间的
长短。
空间复杂度:指存储空间的大小。
一、算法
5、算法与数据结构的关系:
思考:
数据处理的最小单位是( )。 A. 数据 B. 数据元素 C. 数据项 D. 数据结构
补充——数据项
数据项,是数据的最小单位,数据项定 义的内容包括:
item
名称、编号(I)、别名、简述 类型、长度 取值范围
数据项定义举例
数据项名:年级 别名: 取值及含义:〔F|M|J|S〕
F-freshmen,一年级 M-sophomore,二年级 J-junior,三年级 S-senior,四年级 注释:F,M,J,S可分别用1,2,3,4代替
设有六个比赛项目,规定每个选手至多可参加三个项
目,有五人报名参加比赛(如下表所示)。要求设计比
赛日程表,使得在尽可能短的时间内完成比赛。
姓名
项目1
项目2
项目3
丁一
跳高
跳远
100米
马二
标枪
铅球
张三
标枪
100米
200米
李四
铅球
200米
跳高
王五
跳远
200米
(1)设用如下六个不同的编码代表不同的项目:
跳高 跳远 标枪 铅球 100米 200米
不同联系
系主任 1
负责
班级 1
包含
1
N

学生
一对一联系 一对多联系
产品 M
组成 N
零件
多对多联系
习题:将下述表达式用图形的形式表示出来
(1)Data_Structure=(D,S),其中,
D={ 01,02,03,04,05 }
S={ }
集合结构
(2) S=(D, R) D={ a, b, c, d, e, f }
链式存储结构——借助指示元素存储地址的指针表示数据元素 之间的逻辑关系
索引存储结构——在存储结点的同时,还建立附加的索引表, 索引表中的每一项称为索引项,形式为:关键字,地址。 散列存储结构——根据结点的关键字直接计算出该结点的存 储地址。 说明:四种存储方法可结合起来对数据结构进行存储映像。
第2章 数据结构
R={ <a,e>, < b,c >, < c,a >, < e,f >, < f,d > }
解: 上述表达式可用图形表示为:
b
c
a
e
f
d
线性结构
(3) Data_Structure=(D,S),其中,
D={ 01,02,03,04,05 ,06,07 } S={(01,02),(01,03),(01,04),(02, 05),(02,06),(03,07) }
算法 数据结构概述
线性结构
栈和队列 数组 树 图
三、线性结构
线性表 1.线性表的定义
线性表是n(n>=0)个数据元素的有限序列,表中 各个元素具有相同的属性。
记做:(a1,a2,…….ai-1,ai,ai+1,…,an-1,an ) 其中,ai-1称为ai 的直接前趋元素,ai+1是ai的直 接后继元素 线性表的长度:表中的元素个数 n
Data_Structure =(D,R) 其中,D是数据元素的有限集,R是D上关系的有 限集。
二、数据结构概述
[例1] 线性数据结构 =(D,R) D = {1,2,3,4,5,6,7,8,9,10}
R = {<1,2>,<2,3>,<3,4>,<4,5>,<5, 6>,<6,7>,<7,8>,<8,9>,<9,10>}
三、线性结构
线性表的顺序表示和实现
顺序表的表示: 采用顺序存储结构存储的线性表
顺序存储定义:把逻辑上相邻的元素存储在物理 位置上相邻的存储单元中。
简言之:逻辑相邻,物理也相邻
顺序存储方法:用一组地址连续的存储单元依次 存放线性表的数据元素。
线性表顺序存储结构的特点
1、逻辑上相邻的物理元素,其物理位置上也相邻 2、若已知线性表中第1个元素的存储位置,则线性表中任 意一
<习题2> 数据在计算机存储器内表
示时,物理地址与逻辑地址相同并且是
连续的,称之为:
A. 存储结构
B. 逻辑结构
C. 顺序存储结构 D. 链式存储结构
【答案】C
三、线性结构
<习题3>一个向量第一个元素的存储 地址是100,每个元素的长度为2,则第 5个元素的地址是( )。 A. 110 B. 108 C. 100 D. 120
计算机科学家沃斯(N.Wirth)提出的: “算法+数据结构=程序”
计算机内的数值运算依靠方程式,而非数值 运算则要依靠数据结构。
同样的数据对象,用不同的数据结构来表示, 运算效率可能有明显的差异。
第2章 数据结构
算法
数据结构概述
线性结构 栈和队列 数组 树 图
二、数据结构概述
特性相同的数据元素构成的集合中,如果在数据 元素之间存在一种或多种特定的关系,则称之为数 据结构 。
【答案】B
三、线性结构
<习题4> 线性表若采用链式存储结 构时,要求内存中可用存储单元的地址:
A. 必须是连续的 B. 部分地址必须是连续的 C. 一定是不连续的 D. 连续或不连续都可以
出生年月 1989.12 1989.07 1991.02 1990.10 1991.01 1990.03 1991.01 1991.02 1989.12
三、线性结构
2. 线性表的顺序表示和实现 顺序表——线性表的顺序存储表示 顺序表,随机存取
三、线性结构
3. 线性表的链式表示和实现
单链表——线性表的链式存储表示 数据域(data)和指针域(next)
指针域 43 13 1
NULL 37 7 19 25
答:头指针是指向链表中第一 个结点的指针,因此关键是要 寻找第一个结点的地址。
H
31
ZHAO 7
称:头指针H的值是31
例:现有一个有5个元素的线性表 L={23,17,47,05, 31},若它以链式结构存储在下列100~119号地址空间
中,每个结点由数据(占2个字节)和指针(占2个字节) 组成,如下图所示。
结点:数据元素的存储映象
数据域 指针域
数据元素
直接后继位置
链表:n个结点链接成起来形成一个链表,即为线性表的
链式存储结构。
指针域为空
L
a1
a2
… ai-1
ai
… an ^
头结点 L
^
三、线性结构
数据结构是讨论非数值类问题的对 象描述、信息组织方法及其相应的操作
<例1.1 电话号码查询问题>
设有一个电话号码薄,有N个人的姓名和电话号 码。要求设计一个程序,按人名查找号码,若不存在 则给出不存在的信息。
下面叙述正确的是( )。 A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令( 或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限 个步骤之后终止 D. 以上3种描述都不对
二、数据结构概述
3、按数据结构在计算机内的存储方式来划分
顺序存储结构——借助元素在存储器的相对位置来表示数据元 素之间的逻辑关系。
用一组任意的存储单元存储线性表的元素
例:一个线性表的逻辑结构为: (ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG), 其存储结构用单链表表示如下,请问其头指针的值是多少?
存储地址 1 7 13 19 25 31 37 43
数据域 LI
QIAN SUN WANG WU ZHAO ZHENG ZHOU
[例3] 树形结构 =(D,R) D = {a,b,c,d,e,f,g,h,i,j,k,l} R = {<a,b>,<a,c>,<a,d>,<b,e>,<b,f>, <b,g>,<c,h>,<c,i>,<c,j>,<d,k>,<d,l>}
二、数据结构概述
四类基本的数据结构 集合结构。各元素间没有直接的关联。 线性结构。该结构的数据元素之间存在着一对一的关 系。 树型结构。该结构的数据元素之间存在着一对多的关 系。 图形结构。该结构的数据元素之间存在着多对多的关 系,也称作网状结构。
2、线性表顺序存储结构的特点:
相关文档
最新文档