第03基本数据结构及运算-2 堆栈 队列.pptVIP

第03基本数据结构及运算-2 堆栈 队列.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.3 栈 3.3 栈 栈的顺序存储结构及运算 栈的顺序存储结构及运算 栈的顺序存储结构及运算 用数组实现栈 用数组实现栈 (6)栈的应用 栈的链式存储结构及运算 用链表实现栈 栈的链式存储结构及运算 栈的链式存储结构及运算 3.4 队列 1.队列定义 类似于排队机制的结构 队列是特殊的线性表, 节点的插入仅限于在表尾进行, 节点的删除仅限于在表头进行 队列特点 特点: (1)对队列的操作在表的两端进行 (2)仅在队尾加入节点——入队enqueue (3)仅在队首移出节点——出队dequeue (4)遵循“先进先出”的原则——FIFO 队列的顺序存储结构及运算 2. 用数组实现队列 (1)定义 队列的顺序存储结构及运算 (2)入队与出队 循环队列的顺序存储结构及运算 3. 用循环数组实现队列 用循环数组实现队列 用循环数组实现队列 队空条件 队满条件 用循环数组实现队列 队空条件 队满条件 用循环数组实现队列 入队算法 用循环数组实现队列 出队算法 用循环数组实现队列 用链表实现队列 4. 用链表实现队列 用链表实现队列 (二) 入队 新链点插入到队尾 注意:队列为空时,rear和front都要指向新元素 用链表实现队列 (三) 出队 删除队首链点 注意:当队列被删空时,rear指针要置空 3.5 二维数组(矩阵) 1.二维数组定义 行关系,列关系均是线性关系 2. 二维数组的顺序存放 (一)行优先存放 计算aij的存放位置: 二维数组 (二)列优先存放 二维数组 3.矩阵的压缩存储 (1)对称矩阵,三角矩阵的压缩 对称矩阵:a[ i , j ] = a[ j , i ] 三角矩阵:上三角为0,或下三角为0 只存储上或下三角内的元素,节约近一半的存储空间 二维数组 (1)对称矩阵,三角矩阵的压缩 二维数组 (2)稀疏矩阵 矩阵中的非零元素很少,分布没有规律 利用三元存储法 先形成三元矩阵 再按照行优先顺序方式存储。 二维数组 稀疏矩阵压缩存储例 二维数组 稀疏矩阵三元组定义 1)定义三元组元素 2)定义三元组 小结 作业 教材 P120 1—6 typedef struct tuple3tp{ int row_num; /*行号*/ int col_num; /*列号*/ elemtype value; /*元素值*/ } tuple3tp typedef struct tuple3{ int row; /*行数*/ int col; /*列数*/ int num; /*非零元素个数*/ tuple3tp data[ MAXNUM];/* 三元组*/ }tuple3; * * 1. 栈 stack的定义 栈是特殊的线性表,仅在表的一端进行插入或删除操作 an ... a2 a1 栈顶 入栈 出栈 栈底 特点:(1)对栈内数据的操作总在栈顶进行 (2)数据进栈称为“压入”push (3)数据出栈称为“弹出”pop (4)遵循“后进先出”的原则LIFO 输入顺序A,B,C,输出顺序有几种? an ... a2 a1 栈顶 入栈 出栈 栈底 ABC,BAC,BCA,CBA B C A B A ... ... 用数组实现栈 a[max] ... a[1] a[0] ... a[top] 栈顶 a[0]为栈底,top为栈顶 (1)定义 typedef struct stack_type{ elemtype data[MAXNUM]; int top; }stack_type; (2)进栈 push 当新元素进栈时,栈顶上移,新元素放在栈顶。 ... stack.top = stack.top + 1; stack.data[stack.top] = new_one; new_one 栈顶元素 所在位置 a1 a2 ... (3)出栈 pop 从栈顶移出一个数据。 a[max] ... a[1] a[0] a1 a2 栈顶 栈顶元素拷贝出栈,栈顶下移 out out = stack.data[stack.top]; stack.top = stack.top - 1; elemptype pop(stack_type *stack){ elemtype out; if(stack-top = 0) error(3); else{ out = stack-data[stack-top]; stack-top = stack-top -1; } return out; } a[top] (4)栈空判断 stack.top = = 0 stack.top 0 (5)置栈空 stack.top = -1; 栈满判断:st

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档