网站大量收购独家精品文档,联系QQ:2885784924

数据结构课件第3章1209.ppt

  1. 1、本文档共110页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.1 栈 3.1 栈 3.1 栈 3.1 栈 3.1 栈 3.1 栈 3. 1 栈 3. 1 栈 设两个栈共享的数据结构定义如下: #define M 100 typedef struct DqStack { SElemType Stack[M]; int top[2]; //top[0]和top[1]分别为两个栈顶指示器 }DqStack; 初始化操作? 进栈操作算法? int Push(DqStack *S, SElemType x, int i) //把数据元素x压入i号栈 出栈操作算法?  int Pop(DqStack *S, SElemType *x, int i) // 从i 号栈中弹出栈顶元素并送到x中 3.1 栈 3.1 栈 (1) 进栈算法主要语句 p=(NODE *)malloc(sizeof(NODE)); p-data=x; p-next=top; top=p; 3.1 栈 (2) 出栈算法主要语句 if (top==NULL)return(NULL); p=top; top=p-next; return(p); 若带头结点L的链栈进栈、出栈算法主要语句? 3.1 栈 3.2 栈的应用举例 3.2 栈的应用举例 3.2 栈的应用举例 3.2 栈的应用举例 3.3 栈与递归 3.3 栈与递归 3.3 栈与递归 3.3 栈与递归 3.3 栈与递归 3.3 栈与递归 3.4 队列 3.4 队列 3.4 队列 3.4 队列 队列类型定义 #define MAXQSIZE 100 Typedef struct Sqqueue { QelemType *base; int front; int rear; } 3. 4 队列 3. 4 队列 3. 4 队列 3. 4 队列 3. 4 队列 3. 4 队列 3. 4 队列 3. 4 队列 3. 4 队列 链队列的基本操作 入队、出队算法 P62 3. 4 队列 3.5 数组 3.5 .1 数组的概念 3.5 .2 数组的顺序存储结构 3.5.3 特殊矩阵的压缩存储 3.5 .1数组的概念 数组: 数据类型相同的一组数据元素的有序集合。 数组元素: 数据元素--数组元素。 其位置可能由多个下标值确定(参与多个线性关系,每个关系上都有前驱和后继。) 数组的维数: 确定一个数据元素在集合中位置的下标的个数。 以二维数组为例:二维数组中的每个元素都受两个线性关系的约束 数组的基本操作 3.5 .2 数组的顺序存储结构 顺序存储结构:用一组连续的存储单元存放数组元素。 数组一旦定义,元素的个数和元素之间的相互关系不再发生变化, 一般对数组不进行插入和删除操作---顺序存储结构。 计算机内存空间是一维结构。 顺序存储结构存放多维数组元素,有次序约定的问题。 二维数组: 以行为主序的方式:先存储数组的第一行元素,再存储第二行元素…。 以列序为主序的方式:先存储数组的第一列元素,再存储第二列元素…。 程序设计语言中以行为主序:PASCAL、COBOL、C及扩展BASIC …。 以列为主序:FORTRAN。 一维数组存储方式: 三维数组 顺序存储的特点和实现 特点: 随机存取,即存取任何元素花的时间相同。 实现: 根据数组说明,得到数组的元素个数,元素类型(每个元素占用空间大小),然后,分配连续空间,空间的首地址存储在数组名中。 小结 数组中的每个元素都受n个线性关系的约束,在每个关系中,每个元素 aij都有且仅有一个直接前趋,有且仅有一个直接后继。 二维数组顺序存储有两种方式:一种是以行为主序的方式,另一种是以列序为主序的方式。 3.5.3特殊矩阵的压缩存储 特殊矩阵的压缩存储 矩阵如果阶数很高且有很多值相同的元素或零元素,用二维数组存矩阵会浪费很多的存储单元。 为节省存储空间,对这类矩阵可以压缩存储。 压缩存储:为多个值相同的元素分配一个存储空间,对零元素不分配存储空间。 例如,设一个1000 ? 1000的矩阵中有800个非零元素,若用二维数组存储需要106个存储单元,而压缩存储只需800个存储单元。 2. 特殊矩阵压缩存储 特殊矩阵可以采用二维数组的存储方式,但由于其特殊性,空间效率不高(存储了许多零或相同的值),一般采用特殊的存储方式(相同值只存放一

文档评论(0)

bm5044 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档