栈的定义及基本运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

栈的定义及基本运算

1、理解栈的含义

栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。打个比方:用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。栈就是一种类似桶堆积物品的数据结构。

通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。当表中没有元素时称为空栈。栈为后进先出(Last In First Out)的线性表,简称为LIFO 表。栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。

2、常用名词

栈Stack:指整个栈中的数据

节点Node/Point:指保存在栈中的某一项数据.

栈指针Node:一个在栈中移动的指针,一般指针指向当前栈顶

栈顶StackTop:栈的顶部

栈底StackBase:栈的底部

入栈Push:把一个数据放进栈中

出栈/弹栈Pop:将一个数据从栈中取出

栈容量:栈的最大容量

溢出:超过栈容量或在指针指向栈底时取数.

3、栈的运算

(1)常规运算

入栈:

Prcedure PUSH ( Data :TData ) ;

Begin

Inc ( Point ) ;

If (Point>Limited) Then

Exit ;

MoveData ( Stack [ Point ] , Data ) ;

End ;

出栈:

Procedure Pop ( V ar Data:TData );

Begin

Dec ( Point ) ;

If ( Pop < Base ) Then

Exit ;

MoveData ( Data , Stack [ Point ] ) ;

End ;

(2)、基本运算

InitStack(S)构造一个空栈S。

DestroyStack ( S ) 消毁一个存在的栈。

ClearStack ( S ) 置空一个存在的栈。

StackEmpty(S)判栈空。若S为空栈,则返回TRUE,否则返回FALSE。StackFull(S)判栈满。若S为满栈,则返回TRUE,否则返回FALSE。注意:该运算只适用于栈的顺序存储结构。

Push(S,x)进栈。若栈S不满,则将元素x插入S的栈顶。

Pop(S,e)退栈。若栈S非空,则将S的栈顶元素删去,并返回该元素于e。StackTop(S,e)取栈顶元素。若栈S非空,则返回栈顶元素于e,但不改变栈的状态。

StackTraverse(S,visit() ) 栈的Visit方法遍历。

相关文档
最新文档