数据结构学生演示第1节 数据结构概述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1节 数据结构概述 栈和队列 栈的应用举例 栈在表达式计算过程中的应用 :建立操作数栈和运算符栈。运算符有优先级。规则: 自左至右扫描表达式,凡是遇到操作数一律进操作数栈。 当遇到运算符时,如果它的优先级比运算符栈栈顶元素的优先级高就进栈。反之,取出栈顶运算符和操作数栈栈顶的连续两个操作数进行运算,并将结果存入操作数栈,然后继续比较该运算符与栈顶运算符的优先级。 左括号一律进运算符栈,右括号一律不进运算符栈,取出运算符栈顶运算符和操作数栈顶的两个操作数进行运算,并将结果压入操作数栈,直到取出左括号为止。 自左至右扫描表达式,凡是遇到操作数一律进操作数栈。 当遇到运算符时,如果它的优先级比运算符栈栈顶元素的优先级高就进栈。反之,取出栈顶运算符和操作数栈栈顶的连续两个操作数进行运算,并将结果存入操作数栈,然后继续比较该运算符与栈顶运算符的优先级。 左括号一律进运算符栈,右括号一律不进运算符栈,取出运算符栈顶运算符和操作数栈顶的两个操作数进行运算,并将结果压入操作数栈,直到取出左括号为止例如 : 计算 ( 4+8 )×2-3 ; 操作数栈 :4 8 | 12 2 |24 3 |21 运算符栈 :( + |× |- | 操作数栈 运算符栈 ( 4+8 )×2-3 4+8 )×2-3 ( +8 )×2-3 4 8 )×2-3 + )×2-3 8 ×2-3 4+8=12 12 2-3 × -3 2 3 12X2=24 - 24 3 24-3=21 栈和队列 循环队列 Q.front=0 Q.rear=0 1 2 3 4 5 0 队空 1 2 3 4 5 0 front J1,J1,J3入队 J1 J2 J3 rear rear 1 2 3 4 5 0 J4,J5,J6入队 J4 J5 J6 front 设两个指针front,rear,约定: Q.rear指示队尾元素的下一个位置; Q.front指示队头元素 初值Q.front=Q.rear=0 空队列条件:front==rear 入队列:sq[rear++]=x; 出队列:x=sq[front++]; rear rear front rear 1 2 3 4 5 0 J1,J2,J3出队 J1 J2 J3 front front front A B C D E F G H K 例如: 先序序列: 中序序列: 后序序列: A B C D E F G H K B D C A E H G K F D C B H K G F E A 二叉树的遍历 先序遍历算法 若二叉树为空树,则空操作;否则 访问根结点 先序遍历左子树 先序遍历右子树 二叉树的遍历 先序遍历算法 void PREORDER ( bitree *r) { if ( r = = NULL ) return ; //空树返回 printf ( “ %c ”,r-data ) //先访问当前结点 PREORDER( r-lchild ); //再访问该结点的左子树 PREORDER( r-rchild ); //最后访问该结点右子树 } PREORDER ( bitree *r) { if ( r = = NULL ) return ; printf ( %c ,r-data ); PREORDER ( r-lchild ); PREORDER ( r-rchild ); } 主程序 Pre(T) 返回 返回 pre(T R); 返回 返回 pre(T R); A C B D T B printf(B); pre(T L); B T A printf(A); pre(T L); A T D printf(D); pre(T L); D T C printf(C); pre(T L); C 返回 T 左是空返回 pre(T R); T 左是空返回 T 右是空返回 T 左是空返回 T 右是空返回 pre(T R); 先序序列:A B D C 二叉树的遍历 深度优先搜索算法 深度优先搜索(Depth First Search,简称DFS) 1.算法思路 类似树的先根遍历。设初始时,图中各顶点均未被访问,从图中某顶点(设为V0)出发,访问V0,然后搜索V0的一个邻接点Vi,若Vi未被访问,则访问之,再搜索Vi的一个邻接点(深度优先)……。若某顶点的邻接点全部访问完毕,则回溯(Backtracking)到它的上一顶点,然后再从此顶点又按深度优先的方法搜索下去,……,直到能访问的顶点都访问完毕为止。 深度优先搜索算法 例5-9 设有一无向图G10,其DFS搜索过程如图5.20所示。 5 1 4 4 2 6 V5 3 V7 2 0 V6 V2

文档评论(0)

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

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

1亿VIP精品文档

相关文档