- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
严蔚敏数据结构课件第2章 线性表
第 2 章 线性表
教学目标:掌握线性表的基本特征,熟练掌握线性表在顺序和链式物理结构上基本操作的实现,了解两种实现方式的优缺点。
教学重点:线性表的链式实现
教学难点:线性表的链式实现
教学时数:6
线性结构:一个数据元素的有序(次序)序列。
基本特点:
存在唯一的一个被称作“第一个”的数据元素
存在唯一的一个被称作“最后一个”的数据元素
除第一个之外,集合中的每个数据元素均只有一个前驱
除最后一个之外,集合中的每个数据元素均只有一个后继
线性结构:包括:线性表,栈,队列,串,数组
2.1 线性表的类型定义
线性表是n个数据元素的有限序列。
基本概念:
(a1, a2, … ai-1,ai, ai+1 ,…, an)
n=0时为空表
数据元素
线性起点
ai的直接前趋
ai的直接后继
下标,是元素的序号,表示元素在表中的位置
n为元素总个数,即表长
线性终点
抽象数据类型线性表的定义
ADT List{
数据对象:D={ai|ai∈ElemSet, i=1,2,…,n, n≥0}
数据关系:R1={ai-1, ai | ai-1, ai ∈D, i=2,…,n}
基本操作:
InitList(L)
操作结果:构造一个空的线性表L。
DestroyList(L)
初始条件:线性表L已存在。
操作结果:销毁线性表L。
初始化结构
销毁结构
ListEmpty(L)
初始条件:线性表L已存在。
操作结果:若L为空表,则返回TRUE,否则返回FALSE。
ListLength(L)
初始条件:线性表L已存在。
操作结果:返回L中数据元素的个数。
GetElem(L,I,e)
初始条件:线性表L已存在,1≤i ≤ ListLength(L) 。
操作结果:用e返回L中第i个数据元素的值。
LocateElem(L,e)
初始条件:线性表L已存在。
操作结果:返回L中第1个与e相等的数据元素的位序。若这样的元素不存在,则返回值为0。
PriorElem(L, cur_e, pre_e )
初始条件:线性表L已存在。
操作结果:若cur_e是L中的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无定义。
NextElem(L, cur_e, next_e)
初始条件:线性表L已存在。
操作结果:若cur_e是L中的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义。
ListTraverse(L,visit( ))
初始条件:线性表L已存在。
操作结果:依次对L中的每个数据元素调用函数visit( )。一旦visit( )失败,则操作失败。
/* 以上是引用型操作 */
ClearList(L) 加工型操作
初始条件:线性表L已存在。
操作结果:将L重置为空表。
ListInsert(L,i,e)
初始条件:线性表L已存在,1≤i≤Listlength(L)+1。
操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。
ListDelete(L,i,e)
初始条件:线性表L已存在且非空,1≤i≤Listlength(L)。
操作结果:删除L中第i个数据元素,并用e返回其值,L的长度减1。
}ADT List
2.2 线性表的顺序表示和实现
2.2.1 线性表的表示
线性表的顺序表示:用一组地址连续的存储单元依次存储线性表的数据元素。
若用线性表的每个数据元素占l个存储单元,LOC(ai)为第i个数据元素的存储位置
LOC(a1)为线性表的起始位置,或称为基址
LOC(a2)= LOC(a1)+l
LOC(ai)= LOC(a1)+l×(i-1)
这种存储结构即顺序存储结构(逻辑上相邻,物理上也相邻) ,支持顺序访问和随机访问
a1
a2
a3
…
ai-1
ai
ai+1
…
an-1
an
顺序表的存储结构
#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
typedef struct{
ElemType *elem; //存储空间基址
int length; //当前长度
int listsize; //当前分配的存储容量(以
// sizeof(Elemtype)为单位)
}SqList;
初始化操作:创建一个空的顺序线性表
status InitList_Sq(SqList L){
//构造一个空的线性表L。
L.elem=(ElemType *)
您可能关注的文档
- 世界主要气候类型及其特征 定稿.ppt
- 世界地图引出的发现Office PowerPoint 97-2003 幻灯片.ppt
- 世界地球日课件(共18张PPT).ppt
- 世界地理1世界陆地和海洋.ppt
- 专题复习 我国重要的地理界线.ppt
- 世界各地特殊的节日.pptx
- 世界物质性(上课1).ppt
- 世界的陆地和海洋(郑).ppt
- 世界遗产介绍.pptx
- 世界的陆地和海洋(实用课件)1.ppt
- 2025年一级建造师考试《水利水电工程管理与实务》冲刺必刷卷.docx
- 2025年一级建造师考试《水利水电工程管理与实务》逆袭破题卷1.docx
- 2025年一级建造师考试《市政工程管理与实务》冲刺必刷卷 .docx
- 2025年一级造价工程师考试《建设工程计价》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价管理》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(安装专业)》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(土建专业)》预习卷.docx
- 2025年中级会计考试《会计实务》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》全真模拟卷.docx
文档评论(0)