数据结构C语言版第二章.ppt
《数据结构C语言版第二章.ppt》由会员分享,可在线阅读,更多相关《数据结构C语言版第二章.ppt(35页珍藏版)》请在三一文库上搜索。
1、第第2章章 线性表线性表 2.1 线性表的类型定义线性表的类型定义 2.2 线性表的顺序存储线性表的顺序存储 2.3 线性表的链式存储线性表的链式存储 2.4 一元多项式的表示及相加一元多项式的表示及相加 本章主要重点和难点重点:1.线性表的类型定义2.线性表的表示和实现3.线性表的应用难点:1.线性表的链式存储2.线性表的实现 线性结构线性结构是一个数据元素的有序有序(次序)集合。它有四个基本特征:1集合中必存在唯一唯一的一个“第一元素”;2集合中必存在唯一唯一的一个“最后元素”;3除第一元素之外,其它数据元素均有唯一唯一的“前驱”。4除最后元素之外,其它数据元素均有唯一唯一的后继;线性表的
2、结构特点线性表的结构特点2.1 线性表的类型定义线性表的类型定义2.1.1 线性表的逻辑结构线性表的逻辑结构 表头表头表尾表尾序偶序偶 线线性性表表(Linear List)是由n(n0)个类型相同的数据元素a1,a2,,an组成的有限序列,记作(a1,a2,,ai-1,ai,ai+1,an),n为线性表的表长。对n0,除第一个元素无直接前驱、最后一个元素无直接后继外,其余的每个数据元素只有一个直直接接前前驱驱和一个直直接后继接后继。n=0时,线性表为空表。线性表的定义:线性表的定义:例如:一个数、一个符号、字母表、学生登记表等都为线性表。例如:一个数、一个符号、字母表、学生登记表等都为线性表
3、数据元素为数据元素为原子型原子型数据元素为数据元素为结构体型结构体型线性表的特点:线性表的特点:同同一一性性:线性表由同类数据元素组成,每一个ai必须属于同一数据对象。有有穷穷性性:线性表由有限个数据元素组成,表长度就是表中数据元素的个数。有有序序性性:线性表中表中相邻数据元素之间存在着序偶序偶关系。2.1.2 线性表的抽象数据类型定义线性表的抽象数据类型定义 ADT LinearList 数据元素数据元素:D=ai|aiD0,i=1,2,,n,n0,D0为某一数据对象 关系关系:|ai,ai+1D0,i=1,2,n-1 基本操作:基本操作:(1)InitList(L)操作前提:L为未初始化
4、线性表。操作结果:将L初始化为空表。(2)DestroyList(L)操作前提:线性表L已存在。操作结果:将L销毁。(3)ClearList(L)操作前提:线性表L已存在。操作结果:将表L置为空表。(4)EmptyList(L)操作前提:线性表L已存在。操作结果:如果L为空表则返回真,否则返回假。(5)ListLength(L)操作前提:线性表L已存在。操作结果:如果L为空表则返回0,否则返回表中的元素个数。(6)Locate(L,e)操作前提:表L已存在,e为合法元素值。操作结果:如果L中存在元素e,则将“当前指针”指向元素e所在位置并返回真,否则返回假。(7)GetData(L,i)操作前
5、提:表L存在,且i值合法,即1iListLength(L)。操作结果:返回线性表L中第i个元素的值。(8)InsList(L,i,e)操 作 前 提:表 L已 存 在,e为 合 法 元 素 值 且1iListLength(L)+1。操作结果:在L中第i个位置插入新的数据元素e,L的长度加1。(9)DelList(L,i,&e)操作前提:表L已存在且非空,1iListLength(L)。操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。ADT LinearList 2.2 线性表的顺序存储线性表的顺序存储2.2.1 线性表的顺序存储结构线性表的顺序存储结构 线性表的顺序存储是指用一
6、组地地址址连连续续的存储单元依次依次存储线性表中的各个元素。特点:线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。采用顺序存储结构的线性表通常称为顺序表顺序表。假设线性表中有n个元素,每个元素占k个单元,第一个元素的地址为loc(a1),则可以通过如下公式计算出第i个元素的地址loc(ai):loc(ai)=loc(a1)+(i-1)k其中loc(a1)称为基地址。例如:一个线性表的第一个元素的存储地址为100,每个元素的长度为2,则第5个元素的存储地址是多少?分析:已知:loc(a1)=100,k=2;求loc
7、a5)=?根据公式loc(ai)=loc(a1)+(i-1)*k loc(a5)=loc(a1)+(5-1)*2 =100+4*2=108 图2.2 顺序表存储示意图 线性表的动态分配存储结构:#define LIST_INIT_SIZE 100 /*存储空间初始分配量*/#define LISTINCREMENT 10/*空间分配增量*/typedef struct ElemType *elem;/*存储空间基址*/int length;/*当前长度*/int listsize;/*当前分配的存储容量*/SeqList;elemlengthlistsizeSeqListElemType线性
8、表的静态分配存储结构:define MAXSIZE=线性表可能达到的最大长度typedef struct ElemType elemMAXSIZE/*存储空间*/int length;/*记录线性表的长度*/SeqList;/*数组中的下标从0开始*/elem012MAXSIZE+1n说明:说明:1.结点类型定义中ElemType数据类型是抽象化的一般形式,用户可以根据自己实际需要来具体定义顺序元素的数据类型。2.从数组的下标为0的第一个单元开始存放第一个元素。需要注意数组的下标与元素的对应关系,即表中第i个数据元素是L.elemi-1。利用顺序表定义变量的数据类型1)通过变量定义语句:Seq
9、List L;将L定义为SeqList类型。访问顺序表中序号为i的元素ai:L.elemi-1顺序表的表长:L.length2)通过指针变量定义语句:SeqList *L,将L定义为指向SeqList类型的指针变量。访问顺序表中序号为i的元素:Lelemi-1 得到顺序表的表长:Llength2.2.2 线性表顺序存储结构上的基本运算线性表顺序存储结构上的基本运算 1.初始化顺序表status InitList_sq(seqList&L)L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem)exit(OVERFL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言版 第二
