栈——栈的基本概念和基本操作
文章目录
- 栈
- 栈的基本概念
- 栈的定义
- 栈的重要术语
- 栈的特点
- 栈的基本操作
- 创、销
- 增、删
- 查
- 判空
- 栈的数学性质
栈
本文我们初次学习栈,分为栈的基本概念和基本操作两个部分。
学习数据结构,我们的学习理念应该从数据结构的三要素——逻辑结构,存储结构,数据运算来分析和探讨。
栈的基本概念
栈的定义
在学习栈的定义之前,我们先回顾一下我们曾经学习过的线性表。
线性表具有相同数据类型的 n n n (n≥0) 个数据元素的有限序列,其中 n n n为表长,当n= 0时线性表是一个空表。若用L命名线性表,则其一般表示为:
L = ( a 1 , a 2 , . . . . , a i , a i + 1 , . . . , a n ) L= (a_{1},a_{2}, ....,a_{i},a_{i+1},...,a_{n} ) L=(a1,a2,....,ai,ai+1,...,an)
栈(Stack) 是只允许在一端进行插入或删除操作的线性表。
栈的重要术语
下面三个是有关栈的重要术语
栈顶(Top) ——————线性表允许进行插入删除的那一端。
栈底(Bottom)——————固定的,不允许进行插入和删除的另一端。
空栈 ——————不含任何元素的空表。
栈的特点
- 栈的本质就是线性表;
- 最大的特点是栈的元素后进先出(Last In First Out—LIFO);
- 栈的逻辑结构与普通线性表相同;
- 栈的数据运算与线性表在插入和删除等操作不同;
栈的基本操作
创、销
InitStack(&S):初始化一个栈,构造一个空栈S,分配内存空间。
DestroyStack(&L):销毁栈。销毁并释放栈S所占用的内存空间。
增、删
Push(&S,x):进栈,若栈S未满,则将x加入使之成为新栈顶。
Pop(&S,&x):出栈,若栈s非空,则弹出栈顶元素,并用x返回。
查
GetTop(S,&x):读栈顶元素。若栈s非空,则用x返回。
判空
StackEmpty(S):判断一个栈S是否为空。若S为空,则返回true,否则返回false。
栈的数学性质
n n n个不同元素进栈,出栈元素的不同排列的个数为:
1 n + 1 C 2 n n \frac{1}{n+1}C_{2n}^{n} n+11C2nn
上述公式被称为卡特兰数。
栈——栈的基本概念和基本操作相关推荐
- 数据结构,堆和栈和队列的概念
数据结构,堆和栈和队列的概念 1 什么是数据结构 数据结构是计算机存储,组织数据的反复改.数据结构是指相互之间存在的一种或多种特定关系的数据元素集合. 2 数据结构的逻辑结构 1 集合结构,元素都是孤 ...
- 以数制转换问题讲解栈数据结构的基本概念及其在计算机中的应用
以数制转换问题讲解栈数据结构的基本概念及其在计算机中的应用 一.栈的概念介绍 在我们的生活中,总有这么一些例子,①食堂在堆放餐盘的时候,总是从下往上,在取餐盘的时候,又是从上往下:②最先放入厢式货车的 ...
- 数据结构-栈(Stack)-定义与基本操作
数据结构-栈(Stack)-定义与基本操作 一. 顺序栈(Sequential Stack) 1. 定义 2. 基本操作 2.1 初始化 2.2 进栈 2.3 出栈 2.4 取栈顶元素 2.5 判空 ...
- JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈
运行时数据区概述及线程概述 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JV ...
- python元组的创建取值排序计数_Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】...
本文实例讲述了Python元组 tuple的概念与基本操作.分享给大家供大家参考,具体如下: 元组 tuple 元组 tuple的定义 元组的创建 元组的元素访问和计数 1. 元组的元素不能修改 2. ...
- 队列实现栈 | 栈实现队列
队列实现栈 | 栈实现队列 ⼀. ⽤栈实现队列 首先,队列的 API 如下: class MyQueue {/** 添加元素到队尾 */public void push(int x);/** 删除队头 ...
- 顺序栈栈顶指针指向详析
顺序栈栈顶指针指向详析 1.变长型(动态分配内存空间) #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 // 存储空 ...
- 判断顺序栈栈满的两种方式
判断顺序栈栈满的两种方式
- python中元组的概念_python元组的概念与基本操作
元组与列表类似,关于元组同样需要做如下三点: A.概念 1.元组通过英文状态下的圆括号构成"()".其存放元素与列表一样,可以是不通的数值类型,也可以是不通的数据结构. 2.元组仍 ...
最新文章
- 为预测用户出行需求,ofo开始使用AI实现智能调度
- 【Android 多媒体开发】 MediaPlayer 状态机 接口 方法 解析
- 池化层对神经网络的运算速度有什么影响
- pigeon hole
- postgis启动_postgresql的安装和启动方法
- 每日程序C语言2-判断某日期是这一年的第几天
- python贪吃蛇小游戏_python开发贪吃蛇小游戏
- 关于“数据分析”如何快速入门一些基本思路
- cli vue webpack 实战_Vuejs技术栈从CLI到打包上线实战全解析
- Redis的高级应用-安全性和主从复制
- 正则表达式匹配html标签
- 采用Xamarin进行ffmpeg调用视频编解码的方法
- Java面试基础问题之(一)—— JDK和JRE区别
- mongoDB下载安装
- Byte,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb,Bb单位换算
- 《掌控习惯》读书笔记
- 海南信用社计算机试题,2015年海南农村信用社考试试题——计算机基础知识一...
- 【证明】矩阵特征值之和等于主对角线元素之和
- PBFT -Golang实现详解
- linux内核中的文件描述符(四)--fd的分配--get_unused_fd
热门文章
- IntelliJ IDEA 破解方法
- 3d变换基础:平移、旋转、缩放(仿射变换)详解——公式推导
- 模型选择准则之AIC和BIC
- 【实战项目】基于BP神经网络的温度预测(附源码)
- 基于达梦V8使用dexpdp和dimpdp进行逻辑备份和恢复的使用
- 【报错解决】ERROR: pip‘s dependency resolver does not currently take into account all the packages
- 借助 PrivateLink 与 EMQX Cloud 建立安全可靠的连接
- JS在数组对象中添加新字段
- 界面布局上大胆突破,关注到的细分领域
- 计算机网络面试常见题