数据结构线性表概论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
:
:
19 2003级电信0301班
18 2003级电信0302班
19 2003级电信0303班
19 2003级电信0304班
19 2003级电信0305班
:
:
分析:数据元素都是同类型(记录),元素间关系是线性的。
注意:同一线性表中的元素必定具有相同特性 !
强调
本课程不仅要从概念和方法上了解每一种数据结构的 逻辑结构和基本操作,更重要的是要学习如何在计算机上 实现,即如何在计算机上存储数据结构?如何在计算机上 实现对数据结构的各种操作,为此,我们将用计算机语言 来描述数据的存储结构,用计算机语言来描述这些操作的 算法,本课程我们用类C语言做为描述语言。
结构。
线性表的逻辑结构:
(a0, a1, … ai-1,ai, ai+1 ,…, an-1)
线性起点
下标,是元素的 序号,表示元素 在表中的位置
数据元素
ai的直接前趋 ai的直接后继
n=0时称为 空表
线性终点
n为元素总
个数,即表 长。n≥0
例1 分析26 个英文字母组成的英文表是什么结构。
( A, B, C, D, …… , Z)
例2 用数组V来存放26个英文字母组成的线性表 (a,b,c,…,z),写出在顺序结构上生成和 显示该表的C语言程序。
例1 设有一维数组M,下标的范围是0到9, 每个数组元素用相邻的5个字节存储。存储器 按字节编址,设存储数组元素M[0]的第一个 字节的地址是98,则M[3]的第一个字节的 地址是多少?
113
解:已知地址计算通式为:
LOC(ai) = LOC(a0) + L *i
LOC( M[3] ) = 98 + 5 ×3 =113
对上述公式的解释如图所示
3、线性表的顺序存储结构示意图
地址 b=LOC(a0)
b+L b +iL
b +(n-1)L
内容
a0 a1 …… ai ai+1 …… an-1
元素在表中的位序 L0
1
i i+1
n-1
b +(MaxSize1)L LOC ( ai ) = LOC( a0 ) + L *i
空闲区
第二章 线性表
2.1 线性表的逻辑结构 2.2 线性表的顺序存储结构 2.3 线性表的链式存储结构 2.4 一元多项式的表示及相加
通过本章的学习,读者应能掌握
线性表的逻辑结构和存储结构, 以及线性表的基本运算以及实现算法。
2.1 线性表的逻辑结构
第二章 线性表
线性结构特点:在数据元素的非空有限集中
分析: 数据元素都是同类型(字母), 元素间关系是线性的。
例2 分析学生情况登记表是什么结构。
学号
Байду номын сангаас
姓名 性别 年龄
班级
012003010622 陈建武 男
012003010704 赵玉凤 女
012003010813 王 泽 男
012003010906 薛 荃 男
012003011018 王 春 男
:
线性表是一种典型的线性结构。 数据的运算是定义在逻辑结构上的,而运算的具体实现则是 在存储结构上进行的。
数据结构有两种存储方式: 顺序存储,链式存储, 线性表也可以用这两种方法实现。
在计算机内,线性表有两种基本的存储结构: 顺序存储结构和链式存储结构。
下面我们分别讨论这两种存储结构以及对应存储结 构下实现各操作的算法。
接后继。
简言之,线性结构反映结点间的逻辑关系是 一对一 (1:1) 的。
线性结构包括:线性表、堆栈、队列、字符串、数组
等,其中最典型、最常用的是------ 线性表
2.1 线性表的基本概念
1、线性表 它是一种最简单的线性结构。是一种可以在任
意位置进行插入和删除数据元素操作的,由n(n≥0)
个相同类型数据元素a0, a1, … , an-1组成的线性
特点:任意两个在逻辑上相邻的数据元素在物理上不 一定相邻,数据元素的逻辑次序是通过链中的指针 链接实现的。
2.2
线性表的顺序存储结构
2.2.1 顺序表 2.2.2 顺序表上实现的基本运算
2.2 线性表的顺序存储和实现
如何在计算机中存储线性表? 如何在计算机中实现线性表的 基本操作?
2.2.1 顺序表
一、 顺序表的存储结构表示 可以利用数组V[n]来实现
1、顺序表:用一组地址连续的存储单元依次存储线
性表的各个数据元素。即采用顺序存储结构的线性 表。它通常采用静态数组实现数据元素的存储。
注意:在C语言中数组的下标是从0开始,即: V[n]的有效范围是从 V[0]~V[n-1]
2、线性表顺序存储特点:
4、用C语言描述 typedef struct
{
DateType list[MaxSize];
int size;
}SeqList;
/* MaxSize表示数组的最大元素个数,list表示顺序表 的数组名,size表示顺序表中当前存储的数据元素个 数,它必须满足size≤ MaxSize,SeqList是该结构 体的名字。*/
(1) 逻辑上相邻的数据元素,其物理上也相邻; (2) 若已知表中首元素在存储器中的位置,则其他元
素存放位置亦可求出(利用数组V[n]的下标)。
设首元素a0的存放地址为LOC(a0)(称为首地址), 设每个元素占用存储空间(地址长度)为L字节, 则表中任一数据元素的存放地址为:
LOC ( ai+1 ) = LOC( ai ) + L LOC ( ai ) = LOC( a0 ) + L *i
线性表的存储结构
(1)顺序存储结构:它是使用一片地址连续的有限内存单 元空间存储数据元素的一种计算机存储数据方法。
特点:(任意两个在逻辑上相邻的数据元素在物理位置 上也必然相邻)逻辑上相邻的元素,物理上也相邻。
(2)链式存储结构:它是把数据元素和指针定义成一个存 储体,使用指针把发生联系的数据元素链接起来的 一种计算机存储数据方法。
存在唯一的一个被称作“第一个”的数据元素 存在唯一的一个被称作“最后一个”的数据元
素 除第一个外,集合中的每个数据元素均只有一
个前驱 除最后一个外,集合中的每个数据元素均只有
一个后继
线性表是一种最简单的线性结构
线性结构的定义:
若结构是非空有限集,则有且仅有一个开始结点和一个 终端结点,并且所有结点都最多只有一个直接前趋和一个直 接后继。 →可表示为:(a1 , a2 , ……, an) 特点① 只有一个首结点和尾结点; 特点② 除首尾结点外,其他结点只有一个直接前驱和一个直