【教学课件】第2章线性表及其顺序存储.ppt
《【教学课件】第2章线性表及其顺序存储.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第2章线性表及其顺序存储.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章 线性表及其顺序存储线性表及其顺序存储线性表线性表顺序表顺序表栈栈队列队列1线性表是一种常用的数据结构,本章介绍线性表及其线性表是一种常用的数据结构,本章介绍线性表及其顺序存储,并对栈和队列及它们的顺序实现给出了详顺序存储,并对栈和队列及它们的顺序实现给出了详细的设计描述。细的设计描述。2.1线性表线性表 线性表是一个线性结构,它是一个含有线性表是一个线性结构,它是一个含有n0个结点的个结点的有限序列,一般地,一个线性表可以表示成一个线有限序列,一般地,一个线性表可以表示成一个线性序列:性序列:k1,k2,kn,其中,其中k1是开始结点,是开始结点,kn是终是终端结点。端结点。2例例
2、1、26个英文字母组成的字母表个英文字母组成的字母表 (A,B,C、Z)例例2、某校从、某校从1978年到年到1983年各种型号的计年各种型号的计算机拥有量的变化情况。算机拥有量的变化情况。(6,17,28,50,92,188)3姓 名学 号性 别年 龄 健康情况王小林790631 男 18 健康陈 红790632 女 20 一般刘建平790633 男 21 健康张立立790634 男 17 贫血.例例3 学生健康情况登记表如下:学生健康情况登记表如下:4例例4、一副扑克的点数、一副扑克的点数 (2,3,4,J,Q,K,A)从以上例子可看出线性表的逻辑特征是:从以上例子可看出线性表的逻辑特征是
3、:在非空的线性表,有且仅有一个开始结点在非空的线性表,有且仅有一个开始结点a1,它它没有直接前趋,而仅有一个直接后继没有直接前趋,而仅有一个直接后继a2;有且仅有一个终端结点有且仅有一个终端结点an,它没有直接后继,而它没有直接后继,而仅有一个直接前趋仅有一个直接前趋an-1;其余的内部结点其余的内部结点ai(2 i n-1)都有且仅有一个直都有且仅有一个直接前趋接前趋ai-1和一个直接后继和一个直接后继ai+1。线性表是一种典型的线性结构。线性表是一种典型的线性结构。5顺序表顺序表 线性表采用顺序存储的方式存储就称之为顺序表。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依
4、次存放在计算机内存中一组顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。地址连续的存储单元中。2.2顺序表顺序表的存储结构如下图所示:顺序表的存储结构如下图所示:存储地址存储地址存储地址存储地址 location(k location(k1 1)location(k)location(k1 1)+(i-1)l)+(i-1)l en en 结点序号结点序号结点序号结点序号 1 2 i 1 2 i n n len len len lenk1k2kikn内存状况内存状况内存状况内存状况6一个一维数组,下标的范围是到,每一个一维数组,下标的范围是到,每个数组元素用相邻的个字节存储。
5、存储器按字节个数组元素用相邻的个字节存储。存储器按字节编址,设存储数组元素编址,设存储数组元素的第一个字节的地址的第一个字节的地址是是98,则,则的第一个字节的地址是的第一个字节的地址是113例例1因此:因此:LOC(M3)=98+53=113解:地址计算通式为:解:地址计算通式为:LOC(ai)=LOC(a0)+L*i如如顺顺序序表表的的每每个个结结点点占占用用len个个内内存存单单元元,用用location(ki)表表示示顺顺序序表表中中第第i个个结结点点ki所所占占内内存存空空间间的的第第1个个单单元的地址。则有如下的关系元的地址。则有如下的关系location(ki+1)=locati
6、on(ki)+lenlocation(ki)=location(k1)+(i-1)len7存储结构要体现数据的逻辑结构存储结构要体现数据的逻辑结构顺序表的存储结构中,内存中物理地址相邻的结点一顺序表的存储结构中,内存中物理地址相邻的结点一定具有顺序表中的逻辑关系。定具有顺序表中的逻辑关系。8顺序表的实现顺序表的实现 n 用用C语言中的数组存储顺序表。语言中的数组存储顺序表。n C语语言言中中数数组组的的下下标标是是从从0开开始始的的,即即数数组组中中下下标标为为0的的元元素素对对应应的的是是顺顺序序表表中中的的第第1个个结结点点,数数组组中中下下标标为为i的元素对应的是顺序表中的第的元素对应的
7、是顺序表中的第i+1个结点。个结点。n 为为了了方方便便,将将顺顺序序表表中中各各结结点点的的序序号号改改为为和和对对应应数数组组元元素素的的下下标标序序号号一一致致,即即将将顺顺序序表表中中各各结结点点的的序序号号从从0开开始始编编号号。这这样样,一一个个长长度度为为n的的顺顺序序表表可可以以表表示示为为 k0,k1,k2,kn-19顺序表的存储结构的顺序表的存储结构的C语言描述如下:语言描述如下:/*顺序表的头文件,文件名顺序表的头文件,文件名sequlist.h*/#define MAXSIZE 10 typedef int datatype;typedef struct datatyp
8、e aMAXSIZE;int size;sequence_list;表长表长10顺序表的几个基本操作的具体实现顺序表的几个基本操作的具体实现:/函数功能函数功能:顺序表的初始化顺序表的初始化置空表置空表/函数参数函数参数:指向指向sequence_list型变量的指针变量型变量的指针变量slt/函数返回值函数返回值:空空/文件名文件名:sequlist.c,函数名函数名:init()/voidinit(sequence_list slt)slt-size=0;算法算法2.1顺序表的初始化顺序表的初始化-置空表置空表11/函数功能函数功能:在顺序表后部进行插入操作在顺序表后部进行插入操作/函数参
9、数函数参数:指向指向sequence_list型变量的指针变量型变量的指针变量slt/datatype类型的变量类型的变量x/函数返回值函数返回值:空空/文件名文件名:sequlist.c,函数名函数名:append()/voidappend(sequence_list slt,datatypex)if(slt-size=MAXSIZE)printf(顺序表是满的顺序表是满的!);exit(1);slt-aslt-size=x;slt-size=slt-size+1;算法算法2.2在顺序表后部进行插入操作在顺序表后部进行插入操作12打印顺序表的各结点值打印顺序表的各结点值 /函数功能函数功能:
10、打印顺序表的各结点值打印顺序表的各结点值/函数参数函数参数:sequence_list型变量型变量slt/函数返回值函数返回值:空空/文件名文件名:sequlist.c,函数名函数名:display()/voiddisplay(sequence_listslt)inti;if(!slt.size)printf(n顺序表是空的顺序表是空的!);elsefor(i=0;islt.size;i+)printf(%5d,slt.ai);算法算法2.3 打印顺序表的各结点值打印顺序表的各结点值13判断顺序表是否为空判断顺序表是否为空 /函数功能函数功能:判断顺序表是否为空判断顺序表是否为空/函数参数函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 线性 及其 顺序 存储
限制150内