首页 > 其他 > 详细

【知识强化】第三章 栈和队列 3.1 栈

时间:2019-08-24 10:01:31      阅读:80      评论:0      收藏:0      [点我收藏+]

技术分享图片

在第三章我们将继续学习三种非常重要的线性结构,分别是栈和队列的这样的受限线性表。我们将从它们的基本概念、存储结构以及相关应用这三方面进行详细的学习。最后我们将学习数组的相关知识,大家要注意一下这里的数组指的是一种线性结构,与我们之前在程序设计语言当中提到的数组类型是不同的概念。好,数组我们会学习它的定义以及它的存储结构,还有用数组来实现矩阵的压缩存储。最后还会提一个特殊的矩阵叫做稀疏矩阵。好,这就是本章所要学习的重要考点。本章所学习的知识点其实并不难,它常常出现在选择题当中,但是在之后我们解决一些算法时会经常用到本章所提到的数据结构以及在其他学科的学习过程当中我们也会有所应用,所以它是一个非常重要的基础知识。

技术分享图片

好,本节课我们就先来学习栈的相关知识。首先来看栈的基本概念。

技术分享图片

什么是栈呢?我们来看一个这样的小例子。我们在洗好盘子之后,都会这样依次地叠放。其实在这样一叠盘子当中,我们的操作是受限的。什么叫受限呢?我们无法从这些盘子中间的部分进行放入新盘的操作,以及拿出盘子的操作。我们只能在这些盘子的顶部进行放入新盘子的操作,以及拿走盘子的操作。这种操作就是我们刚刚所说的受限操作。其实它用接下来要学习的栈,有非常多的相似之处。

技术分享图片

我们来看书中这样的定义。栈,英文名叫Stack,是一叠一堆的意思。书中是这样定义它的,只允许在一端进行插入或者删除操作的线性表。在定义当中我们只要注意两点,第一点是栈一定是线性表,它具有线性表的所有特点。第二点是它是受限线性表。怎样受限呢?是只允许在一端进行插入或者删除的线性表。好,这就是栈的定义。接下来我们用数据元素来代替盘子画出一个栈的例子。

技术分享图片

这是一个空栈,其中没有任何的数据元素。当我们进行进栈操作时,我们只能在栈的顶部进行入栈。

技术分享图片

而且每一次如果我们想要取走数据元素时,只能取走最顶部的数据元素进行出栈。

技术分享图片

所有的入栈、出栈操作只有在栈的顶部才能进行,这样我们就画出了一个栈S。

技术分享图片

我们称可以进行出栈、入栈操作那一边为栈顶,其中a5为这里的栈顶元素。而无法进行出栈、入栈操作那一边称为栈底,这里a1为栈底元素。我们发现该栈的入栈序列为,a1、a2、a3、a4、a5。而弹栈时我们只能选择栈顶元素进行出栈。所以它的出栈序列为a5、a4、a3、a2、a1,刚刚好是反过来的。在栈中先进入栈的元素会后进行出栈,所以栈是一个后进先出的数据结构。在后面的学习过程当中我们会利用栈这样后进先出的特点解决许多算法问题。好,这就是有关栈的基本概念。

技术分享图片

接下来我们来介绍一下栈的基本操作。首先是一个初始化栈的操作。

 

【知识强化】第三章 栈和队列 3.1 栈

原文:https://www.cnblogs.com/ZHONGZHENHUA/p/11403518.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!