- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构教学资源2章 线性表
第二章 线性表;本章要点;“学生成绩信息表”引例:学生成绩信息表可以用来存储各班学生的基本信息以及相关科目的成绩情况。在此基础上实现对各班某个学生的各科成绩的查询,以及添加或删除一些学生的成绩信息。
思考:1.如何添加和删除学生成绩信息更方便,操作效率更高?
2.如何存储更节省存储空间呢?
;学生成绩信息表中每位学生信息是一个数据元素,构成一个结点。由学号、姓名、性别、出生年月、数学、语文、英语成绩7个数据项组成。如图2-1所示。;图2-1中结点之间连线表示两个结点间一对一的相邻关系。第一个结点王伟,男,1993/01,123,98,90)无直接前驱,但有一个直接后继。最后一个结点李彩霞,女,1993/05,102,113,90)有一个直接前驱,但无直接后继。中间每个结点都有一个直接前驱和一个直接后继。学生成绩信息表是典型的线性表。
; 又如一个星期中的七天可放在一个线性表中:
(星期一,星期二,星期三,星期四,星期五,星期六,星期日)
这也是线性表的具体实例。;线性表中的数据元素无论是单一的数值还是具有结构的记录,它可以是各种类型,但同一表中的数据元素的类型必定是相同的。
表中的一个数据元素可以由若干个数据项组成,也可以只由一个数据项组成。由若干数据项组成的数据元素又可称为记录或结点。
线性表中数据元素之间具有一对一的关系。即在数据元素的非空有限集合中,除第一个数据元素之外,集合中的每一个数据元素都只有一个前驱;除最后一个数据元素之外,集合中的每一个数据元素都只有一个后继。;数据的逻辑结构分为线性结构和非线性结构两种。线性结构是最简单的数据结构,也是十分重要的一种数据结构。因为它的应用最为广泛,同时也是学习和研究其他更为复杂的层次结构和网状结构的基础。
其中线性表是最简单也最常用的一种线性结构。;线性表是由n (n≥0)个相同类型的数据元素组成的有序集合。通常记为L=(a1,a2,…,ai-1,ai,ai+1,…,an)。其中L为线性表名称,习惯用大写书写;a1称为起始结点,an 称为终端结点,ai为组成该线性表的数据元素,习惯用小写书写;i称为数据元素在线性表中的序号或位置。对于相邻一组关系 ai,ai+1, ai称为ai+1的前驱结点,而ai+1称为ai的后继结点。;表中数据元素的个数n(n≥0)称为线性表的长度。例如26个英文字母表是一个长度为26的线性表。当n=0 时,表中无元素,称为空表,简记为Φ。可以表示刚开始建表尚无数据的情况,或者表中元素全部被删除的情形。;线性表中每个数据元素都有一个确定的位置,这取决于它的序号。
线性表: (a1, a2, a3, … ,an-1, an)
序号: 1 2 3 n-1 n
a1是第一个数据元素,an是最后一个数据元素。除第一个和最后一个元素以外,表中任一元素ai存在唯一的直接前驱元素ai-1和唯一的直接后继元素ai+1。;线性表的特征为数据元素之间具有一对一的线性关系。归纳起来有两个要点。
要点1:线性表的逻辑结构可形式化表示成(D,R),其中D={a1,a2,…,an},R={a1,a2,a2,a3,……,an-1,an}。
要点2:ai为序号为i的数据元素(i=1,2,…,n),通常我们将它的数据类型抽象为DataType,DataType根据具体问题而定,如在学生成绩信息表中,它是用户自定义的学生结构体类型。在字符串中,它是字符型。;下面给出线性表基本运算及功能描述。
1.InitList(L) 线性表初始化操作函数。
2.LengthList(L) 求线性表的长度。
3.GetList(L, i) 取表中位置i处的元素。
4.LocateList(L,x)按值查找函数,也称定位操作。
5.InsertList(L,i,x) 插入操作。
6.Delete(L,i) 删除操作。
7.Empty(L) 判空表函数。
8.Clear(L) 表置空操作。;应用上述基本运算可以实现线性表的其他运算,如将两个线性表合并,线性表逆置等。
数据结构的运算是定义在逻辑结构层次上的,而运算的具体实现是建立在存储结构上的。每一个操作的具体实现只有在确定了线性表的存储结构之后才能完成。对于不同的存储结构,这些基本运算的实现细节不同。
下面我们将详细阐述线性表的顺序存储和链式存储,以及在这两种存储方式下实现基本运算的算法。
;线性表的实现主要要解决以下两个方面的问题:
选择怎样的形式来存储。
用怎样的函数来实现线性表的基本操作。
线性表的顺序存储是实际应用中最简单、最常用的一种存储方式。顺序存储结构的线性表简称为
文档评论(0)