- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构-线性表1.pdf
第二章 线性表
曹迎春
yccao@nju.edu.cn
学习目标
• 了解线性表的逻辑结构特性是数据元素之间存在着线性关
系,在计算机中表示这种关系的两类不同的存储结构是顺
序存储结构和链式存储结构。用前者表示的线性表简称为
顺序表,用后者表示的线性表简称为链表。
• 熟练掌握这两类存储结构的描述方法以及线性表的基本操
作在这两种存储结构上的实现。
• 能够从时间和空间复杂度的角度综合比较线性表两种存储
结构的不同特点及其适用场合。
• 结合线性表类型的定义增强对抽象数据类型的理解。
重点和难点
• 链表是本章的重点和难点。扎实的指针操作和内
存动态分配的编程技术是学好本章的基本要求,
分清链表中指针p 和结点*p 之间的对应关系,区
分链表中的头结点、头指针和首元结点的不同所
指以及循环链表、双向链表的特点等。
知识点
• 线性表
• 顺序表
• 链表
• 有序表
学习指南
• 学习数据结构的目标是为了编出质量更高的程序,
因此重在实践。本章讨论的线性表是学习的第
一种也是最简单的一种数据结构,是整个课程的
基础,特别是熟练掌握链表的操作对以后各章的
学习将有很大帮助。
课前思考
• 抽象数据类型的定义由哪几部分组成?
• 按数据元素之间的逻辑关系不同,数据结
构有哪几类?
• 你能举出几个你熟悉的序列的例子来吗?
线性结构
• 线性结构是一个数据元素的有序 (次序)集合。
• 四个基本特征:
– 集合中必存在唯一的一个“第一元素” ;
– 集合中必存在唯一的一个“最后元素” ;
– 除最后元素之外,其它数据元素均有唯一的“后继” ;
– 除第一元素之外,其它数据元素均有唯一的前驱。
抽象数据类型线性表的定义
• 通常可以下列“ n 个数据元素的序列”表示线性表
(Linear_List):(a ,a ,…,a ,…,a )
1 2 i n
• 序列中数据元素的个数n 定义为线性表的表长
• n=0 时的线性表被称为空表
• 称i 为a 在线性表中的位序
i
• 抽象数据类型的定义
ADT List {
a a
D={ | ∈ElemSet, i=1,2,...,n, n≥0 }
i i
a a
R1={ |, , ∈D, i=2,...,n }
a ,a i1 i
i1 i
InitList( L )
DestroyList( L )
ListEmpty( L )
ListLength( L )
PriorElem( L, cur_e, pre_e )
NextElem( L, cur_e, next_e )
GetElem( L, i, e )
LocateElem( L, e, compare( ) )
ListTraverse(L, visit( ))
ClearList( L )
PutElem( L, i, e )
ListInsert( L, i, e )
ListDelete( L, i, e )
} ADT List
线性表的基本操作
• 结构初始化
• 结构销毁
• 引用型操作
• 加工型操作
文档评论(0)