博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈与队列
阅读量:5238 次
发布时间:2019-06-14

本文共 944 字,大约阅读时间需要 3 分钟。

 

一、栈的定义

  栈的定义:栈是限定仅在表尾进行插入和删除的操作的线性表。

  允许插入和删除的一段称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表,简称LIFO结构。

  栈元素具有线性关系,即前驱后继关系,只不过他是一种特殊的线性表。他的特殊之处就在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行。这也就使得:栈底是固定的,最先进栈的只能在栈底。

  栈的插入操作,叫做进栈,也称压栈、入栈。

  栈的删除操作,叫做出栈,也有的叫做弹栈。

二、栈的抽象数据类型

  因为栈也是一个线性表,所以,线性表的顺序存储和链式存储对于栈也同样适用。

三、栈的顺序存储结构及实现

  1、栈的顺序存储结构

  

  2、进栈操作

  

  3、出栈操作

  

  4、栈的链式存储结构

    链栈的操作绝大多数都和单链表类似,只是在插入和删除上特殊一些。

  5、栈的作用

    栈的引入简化了程序设计的问题,划分了不同关注层次,使得思考范围缩小,更加聚焦于我们要解决的问题核心。反之,像数组等,因为要分散精力去考虑数组的下标增减等问题,反而掩盖了问题的本质。

  6、递归

    栈有一个很重要的作用是在程序设计语言中实现了递归。比如:斐波那契数列

    递归:把一个直接调用自己或通过调用语句间接调用自己的函数,称作递归函数。每个递归定义必须至少有一个条件,满足时递归不再进行,即不再引用自身而是返回值退出。

    递归与迭代区别:迭代使用的是循环结构,递归使用的是选择结构。递归能使程序的结构更清晰、更简洁、更容易让人理解,从而减少读懂代码的时间。但是大量的递归调用会建立函数的副本,会消耗大量的时间和内存。迭代则不需要反复调用函数和占用额外的内存。

四、队列的定义

  队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为对头。

五、队列的链式存储结构及实现

  

 

 六、总结

  栈和队列大部分操作和单链表类似,不再做详细介绍。

 

  

转载于:https://www.cnblogs.com/lichuankai/p/8655988.html

你可能感兴趣的文章
OpenFlow 交换机与控制器交互步骤
查看>>
java-内存模型
查看>>
文本相似度比较(网页版)
查看>>
Jenkins关闭、重启,Jenkins服务的启动、停止方法。
查看>>
2019.01.13 bzoj4538: [Hnoi2016]网络(树链剖分)
查看>>
codeforces 315 308
查看>>
BZOJ3998 [TJOI2015]弦论 【后缀自动机】
查看>>
CF E2 - Array and Segments (Hard version) (线段树)
查看>>
svn 架设
查看>>
k8s部署rocketmq 双主
查看>>
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
查看>>
SIGPIPE并产生一个信号处理
查看>>
CentOS
查看>>
Explicit keyword
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
Erdaicms旅游网站程序,微信扫码登录演示和示例程序
查看>>
15第十五章UDF用户自定义函数(转载)
查看>>
爬虫-通用代码框架
查看>>
2019春 软件工程实践 助教总结
查看>>