第 1 章之:栈的特性应用

声明:文章为博主原创,转载请联系博主。文章若有错误和疏漏之处,还望大家不吝赐教!
                                               第一章:数据结构与算法基础

===========================================================
本章重点内容为:
1.数据结构基础与线性表:下三角矩阵元素存储位置计算、队列的特性应用、栈的特性应用
2.广义表:无
3.树:二叉树的特性、二叉树的遍历、哈夫曼树
4.图:边与顶点的关系
5.查找与排序:折半查找、基数排序算法以及这些算法的性能分析
6.算法基础知识:时间复杂度分析
===========================================================
本篇文章主要介绍栈的特性应用

一.概念介绍
首先我们来简单了解一下什么是栈。栈(stack),又名堆栈,它是一种运算受限的线性表。它的受限表
现在只能在其一端进行插入和删除的操作。允许进行插入和删除操作的一端称为栈顶(top),另一端为
栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),
删除称为出栈或弹栈(POP)。它按照先进后出( FILO )的原则存储数据,先进入的数据被压入栈底,最
后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据( 最后一个数据被第一个读出来 )。栈具有记
忆作用,对栈的插入与删除操作中,不需要改变栈底指针。故栈也称为先进后出表

举个简单的例子来帮助理解:
栈就好比一摞书,如果你要去图书馆还书,最后放置到这摞书顶部的书是最先被取出来的,而最早放
置在底部的书是最后被取出来的:

这样的读取数据的方式被称为先进后出(FILO)
栈有两种形式:
1.静态栈:又称"顺序栈"。具有固定大小,并以数组形式实现
2.动态栈:又称"链栈"。可根据需要增长,并以链表形式实现

二.栈的应用
若某个算法需要首先处理序列中最后保存的元素,那么栈对于这种算法而言是非常有用的数据结构。
例如:计算机系统在执行程序时就会使用栈。当某个函数被调用时,计算机系统会将程序的返回地
址、函数的参数以及函数的局部变量保存在栈中。当函数返回时,这些局部变量、参数和返回的地
址等都将被从栈上删除。一个常见的例子:我们在进行回退浏览网页操作时,最近( 最后 )点击的网
页是最先显示的,而最早点击的网页是最后回退的。

软考中,关于栈的常见题型是:根据给出的一组元素及其进出栈的规则,求可能的出栈序列。
例题:若元素a, b, c, d, e, f 依次进栈,允许进栈,退栈操作交替进行。但不允许连续三次进行退栈
工作,则不可能得到的出栈序列是( )
A. dcebfa                            B.cbdaef                            C.bcaefd                            D.afedcb

答案D
解析:要得到选项D,应该按照a入栈,a出栈,b入栈,c入栈,d入栈,e入栈,f入栈,f出栈,e出
           栈,d出栈,c出栈,b出栈的方式得到,但这个顺序不符合题目要求的不能连续三次退栈的要
           求,故选D。其他的选项依据上述思路都可以得到,请自行推导。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值