第03章 栈和队列 数据结构 (第二版) 教学课件.pptVIP

  • 1
  • 0
  • 约7.42千字
  • 约 26页
  • 2018-01-28 发布于浙江
  • 举报

第03章 栈和队列 数据结构 (第二版) 教学课件.ppt

第03章 栈和队列 数据结构 (第二版) 教学课件

第三章 栈和队列 3.1 栈的表示和实现 一、栈的概念 栈(stack)是插入和删除操作限定在表尾进行的线性表。 栈的逻辑表示为:S =(a1,a2, …,an) 表尾元素an称为栈顶(top) 表头元素a1称为栈底(bottom) 不含元素的空表称为空栈 栈的运算特性是后进先出(Last In First Out--LIFO) 或先进后出(First In Last Out--FILO) 3.1 栈的表示和实现 二、栈的基本运算 INISTACK(S) 初始化操作,设定一个空栈S EMPTY(S) 判栈S是否为空函数(true/false) PUSH(S, x) 入栈操作,在栈S顶部插入元素x, 相当于线性表的INSERT(L, n+1, x) POP(S) 出栈函数,若S不空,则返回栈顶元素, 并删除栈顶元素;否则返回空元素NULL, 相当于线性表的DELET(L, n) GETTOP(S) 取栈顶元素函数, 与POP(S)的差别在不删除栈顶元素, 相当于线性表的GET(L, n) CURRENT-SIZE(S) 求S栈中当前元素个数函数, 相当于线性表的LENGTH(L) CLEAR(S) 置栈空操作 3.1 栈的表示和实现 三. 栈的表示和实现 1. 顺序栈的存储结构描述及出入栈运算 CONST arrmax = 栈允许存放元素个数的最大值; TYPE sqstktp = RECORD elem:ARRAY[1..arrmax] OF elemtp; top:0..arrmax END; S = sqstktp; S.elem[i]表示第i个进栈的元素 S.elem[S.top] 表示栈顶元素 当S.top = 0 表示空栈 当S.top = arrmax 表示栈满 3.1 栈的表示和实现 入栈函数push(S,x)的实现 算法思想:若栈满返回false;否则将x入栈,并返回true。 FUNC push_stack (VAR s:sqstktp;x:elemtp):boolean; IF s.top = armax THEN RETURN(false) ELSE [s.top:=s.top+1; s.elem[s.top]:= x; RETURN(true)] ENDF;{push_stack } 3.1 栈的表示和实现 出栈函数pop(S)的实现 算法思想:若栈空则返回空元素NULL; 否则返回栈顶元素。 FUNC pop_stack (VAR s:sqstktp):elemtp; IF s.top = 0 THEN RETURN(NULL) ELSE [ s.top:=s.top -1; RETURN( s.elem[s.top +1] ) ] ENDF;{pop_stack } 3.1 栈的表示和实现 2. 链栈的存储结构描述 TYPE pointer =↑nodetype; nodetype = RECORD data:elemtp; next:pointer END; linkstktp = pointer; 3.2 递归过程 递归是栈的另一个重要应用,也是程序设计的一个强有力的工具。 1. 应用递归的原因和领域 递归定义 ┏

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档