当前位置:首页 > C++目录 > 正文内容

【数据结构】栈(Stack)的介绍

亿万年的星光5年前 (2021-02-19)C++目录2333

栈是只能在某一端插入和删除的特殊线性表。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表(LIFO表)。


一、栈的定义



二、分类

  • 静态栈:使用数组

  • 动态栈:链表

  • 标准库STL中的stack


三、算法

  • 入栈:push

  • 出栈:pop

  • 判断栈空:empty

  • 栈大小:size

  • 访问栈顶:top


  1. 进栈(PUSH)算法

    ①若top >= n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则进行②)

    ②top++ (栈指针加1,指向进栈地址)

    ③s[top]=x,结束(x为新进栈的元素)

  2. 退栈(POP)算法

    ①若top<=0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈,空则下溢;不空则进行②)

    ②x=s[top],(退栈后的元素赋给x)

    ③top--,结束(栈指针减1,指向栈顶)


四、应用

  • 函数中调用其他函数

  • 中断

  • 表达式求值

  • 内存分配

  • 缓冲处理

  • 迷宫



扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【数论】龟速乘

【数论】龟速乘

我们前面一篇文章学习了快速幂。它可以解决两类问题:a^b,(a^b)%c对于第一类,我们可以使用递归法或者迭代法可以求出,为了计算的快,我们可以引入位运算操作,但是目前来看,无论怎么优化都不能超过lo...

完全背包问题

1. 问题定义完全背包问题是经典的动态规划问题之一。它的基本描述如下:有一个容量为 V 的背包。有 N 种物品,每种物品有无限个可用。第 i ...

01背包问题

问题定义01背包问题是一个经典的组合优化问题,通常描述如下:有个容量为C的背包有n件物品,第i件物品的重量为Wi,价值为Vi每种物品只有一件,可以选择放入背包(1)或不放入背包(0),因此称为“01”...

【STL】二分查找函数(算法)—binary_search

【说明】binary_search() 实现了一个二分查找算法。它会在前两个参数指定范围内搜索等同于第三个参数的元素。指定范围的迭代器必须是正向迭代器而且元素必须可以使用 < 运算符来比较。这个...

C++中的max和min函数(最大值,最小值)

1.头文件      最大值最小值函数所在头文件是#include<algorithm>2.用法#include<iostream> #incl...

c++ 如何用链表存取数据

c++ 如何用链表存取数据

由于单链表的每个结点都有一个数据域和一个指针域。所以,每个结点可以定义成一个记录。其中,DATA数据元素,可以为你想要储存的任何数据格式,可以是数组,可以是int,甚至可以是结构体(这就是传说中的结构...