文章目录

    • 栈的基本概念
      • 栈的定义
      • 栈的重要术语
      • 栈的特点
    • 栈的基本操作
      • 创、销
      • 增、删
      • 判空
    • 栈的数学性质

本文我们初次学习栈,分为栈的基本概念基本操作两个部分。
学习数据结构,我们的学习理念应该从数据结构的三要素——逻辑结构,存储结构,数据运算来分析和探讨。

栈的基本概念

栈的定义

在学习栈的定义之前,我们先回顾一下我们曾经学习过的线性表。


线性表具有相同数据类型的 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+11​C2nn​
上述公式被称为卡特兰数。

栈——栈的基本概念和基本操作相关推荐

  1. 数据结构,堆和栈和队列的概念

    数据结构,堆和栈和队列的概念 1 什么是数据结构 数据结构是计算机存储,组织数据的反复改.数据结构是指相互之间存在的一种或多种特定关系的数据元素集合. 2 数据结构的逻辑结构 1 集合结构,元素都是孤 ...

  2. 以数制转换问题讲解栈数据结构的基本概念及其在计算机中的应用

    以数制转换问题讲解栈数据结构的基本概念及其在计算机中的应用 一.栈的概念介绍 在我们的生活中,总有这么一些例子,①食堂在堆放餐盘的时候,总是从下往上,在取餐盘的时候,又是从上往下:②最先放入厢式货车的 ...

  3. 数据结构-栈(Stack)-定义与基本操作

    数据结构-栈(Stack)-定义与基本操作 一. 顺序栈(Sequential Stack) 1. 定义 2. 基本操作 2.1 初始化 2.2 进栈 2.3 出栈 2.4 取栈顶元素 2.5 判空 ...

  4. JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈

    运行时数据区概述及线程概述 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JV ...

  5. python元组的创建取值排序计数_Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】...

    本文实例讲述了Python元组 tuple的概念与基本操作.分享给大家供大家参考,具体如下: 元组 tuple 元组 tuple的定义 元组的创建 元组的元素访问和计数 1. 元组的元素不能修改 2. ...

  6. 队列实现栈 | 栈实现队列

    队列实现栈 | 栈实现队列 ⼀. ⽤栈实现队列 首先,队列的 API 如下: class MyQueue {/** 添加元素到队尾 */public void push(int x);/** 删除队头 ...

  7. 顺序栈栈顶指针指向详析

    顺序栈栈顶指针指向详析 1.变长型(动态分配内存空间) #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 // 存储空 ...

  8. 判断顺序栈栈满的两种方式

    判断顺序栈栈满的两种方式

  9. python中元组的概念_python元组的概念与基本操作

    元组与列表类似,关于元组同样需要做如下三点: A.概念 1.元组通过英文状态下的圆括号构成"()".其存放元素与列表一样,可以是不通的数值类型,也可以是不通的数据结构. 2.元组仍 ...

最新文章

  1. 为预测用户出行需求,ofo开始使用AI实现智能调度
  2. 【Android 多媒体开发】 MediaPlayer 状态机 接口 方法 解析
  3. 池化层对神经网络的运算速度有什么影响
  4. pigeon hole
  5. postgis启动_postgresql的安装和启动方法
  6. 每日程序C语言2-判断某日期是这一年的第几天
  7. python贪吃蛇小游戏_python开发贪吃蛇小游戏
  8. 关于“数据分析”如何快速入门一些基本思路
  9. cli vue webpack 实战_Vuejs技术栈从CLI到打包上线实战全解析
  10. Redis的高级应用-安全性和主从复制
  11. 正则表达式匹配html标签
  12. 采用Xamarin进行ffmpeg调用视频编解码的方法
  13. Java面试基础问题之(一)—— JDK和JRE区别
  14. mongoDB下载安装
  15. Byte,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb,Bb单位换算
  16. 《掌控习惯》读书笔记
  17. 海南信用社计算机试题,2015年海南农村信用社考试试题——计算机基础知识一...
  18. 【证明】矩阵特征值之和等于主对角线元素之和
  19. PBFT -Golang实现详解
  20. linux内核中的文件描述符(四)--fd的分配--get_unused_fd

热门文章

  1. IntelliJ IDEA 破解方法
  2. 3d变换基础:平移、旋转、缩放(仿射变换)详解——公式推导
  3. 模型选择准则之AIC和BIC
  4. 【实战项目】基于BP神经网络的温度预测(附源码)
  5. 基于达梦V8使用dexpdp和dimpdp进行逻辑备份和恢复的使用
  6. 【报错解决】ERROR: pip‘s dependency resolver does not currently take into account all the packages
  7. 借助 PrivateLink 与 EMQX Cloud 建立安全可靠的连接
  8. JS在数组对象中添加新字段
  9. 界面布局上大胆突破,关注到的细分领域
  10. 计算机网络面试常见题