数据结构与算法--线性表(C++)PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
性表中的元素必须是同一类型的;
▪(2) 在表中 ai-1 领先于ai ,ai 领先于ai+1 ,称ai-1 是ai
的直接前驱,ai+1 是ai 的直接后继;
▪(3) 在线性表中,除第一个元素和最后一个元素
之外,其他元素都有且仅有一个直接前驱,有且仅有
一个直接后继,具有这种结构特征的数据结构称为线
性结构;
为了存储线性表,至少要保存两类信息: 1)线性表中的数据元素; 2)线性表中数据元素的顺序关系;
精选ppt
11
线性表按存储分类:
1)顺序表 SqList 2)链表 线性链表 SimpleLinkList
循环链表 SimpleCircLinkList 双向链表 SimpleDblLinkList 静态链表 StLinkList
8.StatusCode Insert(int position, const ElemType &e) 初始条件:线性表已存在,1≤position≤Length()+1。 操作结果:在线性表的第position个位置前插入元素e, 长度加1。
精选ppt
10
如何在计算机中存储线性表? 如何在计算机中实现线性表的 基本操作?
线性表(a1,a2,a3, ... an) 的顺序存储结构
Loc(ai ) = Loc( a1 )+ ( i-1 ) * L
精选ppt
L个单元
a1 a2
…
ai-1
ai ai+1
…
an
Loc( a1) Loc( ai )
14
顺序表(SqList)类的定义
// 顺序表类
template <class elemType>
精选ppt
4
几点说明:
a1 a2 a3 a4 a5 a6
▪(4) 线性表中元素的个数n 称为线性表的长度,
n=0 时称为空表;
▪(5) ai是线性表的第i 个元素,称i 为数据元素ai 的
序号,每一个元素在线性表中的位置,仅取决于它的序 号。
精选ppt
5
线性表的基本操作
1.int Length() const 初始条件:线性表已存在。 操作结果:返回线性表元素个数。
Essential of Lecture Two :
一、线性表的定义 二、线性表---顺序表 三、顺序表的基本操作 四、顺序表的优缺点 五、顺序表的应用
难点
精选ppt
重点
1
一、线性表的定义 ( Linear List )
▪ 【定义】:由n(n≧0)个数据元素(结点)a1,a2, …an组 成的有限序列。其中数据元素的个数n定义为表的长度。
精选ppt
8
线性表的基本操作
5.StatusCode GetElem(int position, ElemType &e) const
初始条件:线性表已存在,1≤position≤Length()。 操作结果:用e返回第position个元素的值。
6.StatusCode SetElem(int position, const ElemType &e)
姓名 王小林 陈红 刘建平 张立立
学号 020631 020632 020633 020634
性别 男 女 男 男
年龄 18 20 21 17
……..
…….. ……. …….
健康情况 健康 一般 健康
神经衰弱 …….
精选ppt
3
几点说明:
a1 a2 a3 a4 a5 a6
▪ 设 A=(a1, a2, ... , ai -1, ai , ai+1, …, an )是一线性表 ▪(1) 线性表的数据元素可以是各种各样的,但同一线
class SqList
{
protected:
// 顺序表实现的数据成员:
int count;
// 元素个数
int maxSize; // 顺序表最大元素个数
elemType *elems; // 元素存储空间
精选ppt
15
// 辅助函数 bool Full() const; // 判断线性表是否已满 void Init(int size); // 初始化线性表
精选ppt
12
二、顺序表 Sequential List
顺序表的定义和特点
定义: 将线性表中的元素相继存放在一个 连续的存储空间中。
可利用一维数组描述存储结构 特点: 线性表的顺序存储方式 遍历: 顺序访问
精选ppt
13
二、顺序表 Sequential List
线性表的顺序表示,就是 用一组地址连续的内存单元依 次存放线性表的数据元素。
初始条件:线性表已存在,1≤position≤Length()。 操作结果:将线性表的第position个位置的元素赋 值为e。
精选ppt
9
线性表的基本操作
7.StatusCode Delete(int position, ElemType &e) 初始条件:线性表已存在,1≤position≤Length()。 操作结果:删除线性表的第position个位置的元素, 并用 e返回其值,长度减1。
当n=0时称为空表,常常将非空的线性表(n>0)记作:
▪
(a1,a2, ... ... , an)
▪ 例1、26个英文字母组成的wk.baidu.com母表
(A,B,C ,... ... , Z)
▪ 例2、某校从1978年到1983年各种型号的计算机拥有 量的变化情况。
(6,17,28,50,92,188)
精选ppt
2
例3、学生健康情况登记表
2.bool Empty() const 初始条件:线性表已存在。 操作结果:如线性表为空,则返回true,否则返回 false。
精选ppt
6
线性表的基本操作
3.void Clear() 初始条件:线性表已存在。 操作结果:清空线性表。
4.void Traverse(void (*visit)(const ElemType &)) const
初始条件:线性表已存在。 操作结果:依次对线性表的每个元素调用函数 (*visit)。
精选ppt
7
为表示各种状态信息,定义枚举类型 StatusCode供使用,具体声明如下:
// 自定义类型 enum StatusCode {
SUCCESS, FAIL, UNDER_FLOW, OVER_FLOW,RANGE_ERROR, DUPLICATE_ERROR, NOT_PRESENT, ENTRY_INSERTED, ENTRY_FOUND, VISITED, UNVISITED };