线性表及其顺序存储课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《线性表及其顺序存储课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性 及其 顺序 存储 课件
- 资源描述:
-
1、第第2章章 线性表及其顺序存储线性表及其顺序存储线性表线性表顺序表顺序表栈栈队列队列1 1第1页,共24页。线性表是一种常用的数据结构,本章介绍线性表及其顺序线性表是一种常用的数据结构,本章介绍线性表及其顺序存储,并对栈和队列及它们的顺序实现给出了详细的设计存储,并对栈和队列及它们的顺序实现给出了详细的设计描述。描述。线性表是一个线性结构,它是一个含有线性表是一个线性结构,它是一个含有n0个结点的有个结点的有限序列,一般地,一个线性表可以表示成一个线性序列:限序列,一般地,一个线性表可以表示成一个线性序列:k1,k2,kn,其中,其中k1是开始结点,是开始结点,kn是终端结点。是终端结点。2
2、2第2页,共24页。例例1、26个英文字母组成的字母表个英文字母组成的字母表 (A,B,C、Z)例例2、某校从、某校从1978年到年到1983年各种型号的计算机年各种型号的计算机拥有量的变化情况。拥有量的变化情况。(6,17,28,50,92,188)3 3第3页,共24页。姓 名学 号性 别年 龄 健康情况王小林790631 男 18 健康陈 红790632 女 20 一般刘建平790633 男 21 健康张立立790634 男 17 贫血.例例3 学生健康情况登记表如下:学生健康情况登记表如下:4 4第4页,共24页。例例4、一副扑克的点数、一副扑克的点数 (2,3,4,J,Q,K,A)从
3、以上例子可看出线性表的逻辑特征是:从以上例子可看出线性表的逻辑特征是:在非空的线性表,有且仅有一个开始结点在非空的线性表,有且仅有一个开始结点a1,它没有,它没有直接前趋,而仅有一个直接后继直接前趋,而仅有一个直接后继a2;有且仅有一个终端结点有且仅有一个终端结点an,它没有直接后继,而仅有,它没有直接后继,而仅有一个直接前趋一个直接前趋an-1;其余的内部结点其余的内部结点ai(2in-1)都有且仅有一个直接前都有且仅有一个直接前趋趋ai-1和一个直接后继和一个直接后继ai+1。线性表是一种典型的线性结构。线性表是一种典型的线性结构。5 5第5页,共24页。线性表采用顺序存储的方式存储就称之
4、为顺序表。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。的存储单元中。顺序表的存储结构如下图所示:顺序表的存储结构如下图所示:len len len lenk1k2k ik n6 6第6页,共24页。一个一维数组,下标的范围是到,每个数组一个一维数组,下标的范围是到,每个数组元素用相邻的个字节存储。存储器按字节编址,设存元素用相邻的个字节存储。存储器按字节编址,设存储数组元素储数组元素的第一个字节的地址是的第一个字节的地址是 98,则,则的的第一个字节的地址是第一个字节的地址
5、是 113例例1因此:因此:LOC(M3)=98+5 3=113解:地址计算通式为:解:地址计算通式为:LOC(ai)=LOC(a0)+L*i如顺序表的每个结点占用如顺序表的每个结点占用len个内存单元,用个内存单元,用location(ki)表示顺序表中第表示顺序表中第i个结点个结点ki所占内存空间的第所占内存空间的第1个单元的地址。个单元的地址。则有如下的关系则有如下的关系location(ki+1)=location(ki)+lenlocation(ki)=location(k1)+(i-1)len7 7第7页,共24页。存储结构要体现数据的逻辑结构存储结构要体现数据的逻辑结构顺序表的存
6、储结构中,内存中物理地址相邻的结点一定具有顺序表的存储结构中,内存中物理地址相邻的结点一定具有顺序表中的逻辑关系。顺序表中的逻辑关系。8 8第8页,共24页。n 用用C语言中的数组存储顺序表。语言中的数组存储顺序表。n C语言中数组的下标是从语言中数组的下标是从0开始的,即数组中下标为开始的,即数组中下标为0的元素的元素对应的是顺序表中的第对应的是顺序表中的第1个结点,数组中下标为个结点,数组中下标为i的元素对应的的元素对应的是顺序表中的第是顺序表中的第i+1个结点。个结点。n 为了方便,将顺序表中各结点的序号改为和对应数组为了方便,将顺序表中各结点的序号改为和对应数组元素的下标序号一致,即将
7、顺序表中各结点的序号从元素的下标序号一致,即将顺序表中各结点的序号从0开开始编号。这样,一个长度为始编号。这样,一个长度为n的顺序表可以表示为的顺序表可以表示为 k0,k1,k2,kn-19 9第9页,共24页。顺序表的存储结构的顺序表的存储结构的C语言描述如下:语言描述如下:/*顺序表的头文件,文件名顺序表的头文件,文件名sequlist.h*/#define MAXSIZE 10 typedef int datatype;typedef struct datatype aMAXSIZE;int size;sequence_list;1010第10页,共24页。顺序表的几个基本操作的具体实现
8、顺序表的几个基本操作的具体实现:/函数功能函数功能:顺序表的初始化顺序表的初始化置空表置空表 /函数参数函数参数:指向指向sequence_list型变量的指针变量型变量的指针变量slt /函数返回值函数返回值:空空 /文件名文件名:sequlist.c,函数名函数名:init()/void init(sequence_list slt)slt-size=0;算法算法2.1顺序表的初始化顺序表的初始化-置空表置空表1111第11页,共24页。/函数功能函数功能:在顺序表后部进行插入操作在顺序表后部进行插入操作 /函数参数函数参数:指向指向sequence_list型变量的指针变量型变量的指针变
9、量slt /datatype类型的变量类型的变量x /函数返回值函数返回值:空空 /文件名文件名:sequlist.c,函数名函数名:append()/void append(sequence_list slt,datatype x)if(slt-size=MAXSIZE)printf(顺序表是满的顺序表是满的!);exit(1);slt-aslt-size=x;slt-size=slt-size+1;算法算法2.2 在顺序表后部进行插入操作在顺序表后部进行插入操作1212第12页,共24页。打印顺序表的各结点值打印顺序表的各结点值/函数功能函数功能:打印顺序表的各结点值打印顺序表的各结点值
10、/函数参数函数参数:sequence_list型变量型变量slt /函数返回值函数返回值:空空 /文件名文件名:sequlist.c,函数名函数名:display()/void display(sequence_list slt)int i;if(!slt.size)printf(n顺序表是空的顺序表是空的!);else for(i=0;islt.size;i+)printf(%5d,slt.ai);算法算法2.3 打印顺序表的各结点值打印顺序表的各结点值1313第13页,共24页。判断顺序表是否为空判断顺序表是否为空 /函数功能函数功能:判断顺序表是否为空判断顺序表是否为空 /函数参数函数参
展开阅读全文