数据结构栈.ppt
《数据结构栈.ppt》由会员分享,可在线阅读,更多相关《数据结构栈.ppt(51页珍藏版)》请在第壹文秘上搜索。
1、数数 据据 结结 构构 测测 绘绘 学学 院院数数 据据 结结 构构 测测 绘绘 学学 院院二、教学要求:二、教学要求:1 1、掌握栈和队列的定义、特性,并能正确应用它、掌握栈和队列的定义、特性,并能正确应用它们解决实际问题;们解决实际问题;2 2、熟练掌握栈的顺序表示、链表表示以及相应操、熟练掌握栈的顺序表示、链表表示以及相应操作的实现。特别注意栈空和栈满的条件;作的实现。特别注意栈空和栈满的条件;3 3、熟练掌握队列的顺序表示、链表表示以及相应、熟练掌握队列的顺序表示、链表表示以及相应操作的实现。特别是循环队列中队头与队尾指针操作的实现。特别是循环队列中队头与队尾指针的变化情况的变化情况数
2、数 据据 结结 构构 测测 绘绘 学学 院院栈和队列是两种特殊的线性表,是栈和队列是两种特殊的线性表,是的线性表,称限定性数据结构。的线性表,称限定性数据结构。 队列的应用队列的应用数数 据据 结结 构构 测测 绘绘 学学 院院3.1 栈(栈(stack)一、一、 栈的定义:限定仅在栈的定义:限定仅在表尾表尾进行插入或删除操进行插入或删除操作的线性表,表尾作的线性表,表尾栈顶栈顶,表头,表头栈底栈底,不含元,不含元素的空表称空栈素的空表称空栈 特点:先进后出(特点:先进后出(FILO)或后进先出(或后进先出(LIFO)ana1a2.栈底栈底栈栈顶顶.出栈出栈进栈进栈栈栈s=(a1,a2,an)
3、数数 据据 结结 构构 测测 绘绘 学学 院院栈的特点栈的特点根据栈的定义可知,最先放入栈中元素在栈底,根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后最后放入的元素最先删除,最先放入的元素最后删除。删除。也就是说,栈是一种也就是说,栈是一种后进先出后进先出(Last In First Out)的线性表,简称为的线性表,简称为LIFO表。表。 stack数数 据据 结结 构构 测测 绘绘 学学 院院栈的基本操作栈的基本操作1.初始化栈:初始化栈:INISTACK(&S)将栈将
4、栈S置为一个空栈置为一个空栈(不含任何元素不含任何元素)。2.进栈:进栈:PUSH(&S,X)将元素将元素X插入到栈插入到栈S中,也称为中,也称为 “入栈入栈”、 “插入插入”、 “压入压入”。3.出栈:出栈: POP(&S) 删除栈删除栈S中的栈顶元素,也称为中的栈顶元素,也称为”退栈退栈”、 “删除删除”、 “弹出弹出”。4.取栈顶元素:取栈顶元素: GETTOP(S,&e)取栈取栈S中栈顶元素。中栈顶元素。5.判栈空:判栈空: StackEmpty(S)判断栈判断栈S是否为空,若为空,返回值为是否为空,若为空,返回值为true,否则返回值为,否则返回值为false。数数 据据 结结 构构
5、 测测 绘绘 学学 院院例例1:对于一个栈,给出输入项对于一个栈,给出输入项A、B、C,如果输入项序列,如果输入项序列由由ABC组成,试给出所有可能的输出序列。组成,试给出所有可能的输出序列。A进进 A出出 B进进 B出出 C进进 C出出 ABCA进进 A出出 B进进 C进进 C出出 B出出 ACBA进进 B进进 B出出 A出出 C进进 C出出 BACA进进 B进进 B出出 C进进 C出出 A出出 BCAA进进 B进进 C进进 C出出 B出出 A出出 CBA不可能产生输出序列不可能产生输出序列CAB数数 据据 结结 构构 测测 绘绘 学学 院院 43512不可能实现,主要是其中的不可能实现,主
6、要是其中的12顺序不能顺序不能实现;实现; 12345的输出可以实现,只需压入一个立即弹的输出可以实现,只需压入一个立即弹出一个即可。出一个即可。 435612中到了中到了12顺序不能实现;顺序不能实现; 135426可以实现。可以实现。例例3:如果一个栈的输入序列为:如果一个栈的输入序列为123456,能否得,能否得到到435612和和135426的出栈序列?的出栈序列?答:答:答:答:数数 据据 结结 构构 测测 绘绘 学学 院院设依次进入一个栈的元素序列为设依次进入一个栈的元素序列为c,a,b,d,则可得到出栈的元素序列是:则可得到出栈的元素序列是: A、D可以(可以( B、C不行)。不
7、行)。答:答:数数 据据 结结 构构 测测 绘绘 学学 院院二、二、 顺序栈顺序栈 由于栈是运算受限的线性表,因此线性表的存储由于栈是运算受限的线性表,因此线性表的存储结构对栈也适应。结构对栈也适应。 栈的顺序存储结构简称为顺序栈,它是运算受限栈的顺序存储结构简称为顺序栈,它是运算受限的线性表。因此,可用数组来实现顺序栈。因为栈底的线性表。因此,可用数组来实现顺序栈。因为栈底位置是固定不变的,所以可以将栈底位置设置在数组位置是固定不变的,所以可以将栈底位置设置在数组的两端的任何一个端点;栈顶位置是随着进栈和退栈的两端的任何一个端点;栈顶位置是随着进栈和退栈操作而变化的,故需用一个整型变量操作而
8、变化的,故需用一个整型变量top来指示当前来指示当前栈顶的位置,通常称栈顶的位置,通常称top为栈顶指针。为栈顶指针。数数 据据 结结 构构 测测 绘绘 学学 院院因此,顺序栈的类型定义只需将顺序表的类因此,顺序栈的类型定义只需将顺序表的类型定义中的长度属性改为型定义中的长度属性改为top即可。顺序栈即可。顺序栈的类型定义如下(的类型定义如下(静态)静态) # define StackSize 100 typedef struct ElemType dataStackSize; int top; SeqStack; 数数 据据 结结 构构 测测 绘绘 学学 院院/- 栈的顺序存储表示栈的顺序存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构