stack 订阅
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往上堆。取走时,只能从上面一件一件取。读和取都在顶部进行,底部一般是不动的。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈,删除则称为退栈。 栈也称为后进先出表。 展开全文
栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往上堆。取走时,只能从上面一件一件取。读和取都在顶部进行,底部一般是不动的。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈,删除则称为退栈。 栈也称为后进先出表。
信息
性    质
计算机科学中是一种数据结构
解    释
古代用竹木条横排编成车箱的车子
外文名
Stack
中文名
其他意义
姓氏
Stack进栈算法
①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);②置TOP=TOP+1(栈指针加1,指向进栈地址);③S(TOP)=X,结束(X为新进栈的元素);
收起全文
精华内容
下载资源
问答
  • stack

    千次阅读 2020-08-18 16:54:27
    stack是一种先进后出的数据结构。stack除了最顶端元素外,没有其他办法去读取其他元素,因此stack不存在遍历行为。所以stack没有迭代器。 stack容器适配器的创建 由于 stack 适配器以模板类 stack<T,Container...

    stack是一种先进后出的数据结构。stack除了最顶端元素外,没有其他办法去读取其他元素,因此stack不存在遍历行为。所以stack没有迭代器。

    stack容器适配器的创建
    由于 stack 适配器以模板类 stack<T,Container=deque>(其中 T 为存储元素的类型,Container 表示底层容器的类型)的形式位于头文件中,并定义在 std 命名空间里。

    stack<int> values;
    
    • 上面这行代码,就成功创建了一个可存储 int 类型元素,底层采用 deque 基础容器的 stack 适配器。

    上面提到,stack<T,Container=deque> 模板类提供了 2 个参数,通过指定第二个模板类型参数,我们可以使用出 deque 容器外的其它序列式容器,只要该容器支持 empty()、size()、back()、push_back()、pop_back() 这 5 个成员函数即可。

    • 在介绍适配器时提到,序列式容器中同时包含这 5 个成员函数的,有 vector、deque 和 list 这 3 个容器。因此,stack 适配器的基础容器可以是它们 3 个中任何一个。例如,下面展示了如何定义一个使用 list 基础容器的 stack 适配器:

    std::stack<std::string, std::list<int>> values;

    • 可以用一个基础容器来初始化 stack 适配器,只要该容器的类型和 stack 底层使用的基础容器类型相同即可。例如:
    std::list<int> values {1, 2, 3};
    std::stack<int,std::list<int>> my_stack (values);

    初始化后的 my_stack 适配器中,栈顶元素为 3,而不是 1。另外在第 2 行代码中,stack 第 2 个模板参数必须显式指定为 list(必须为 int 类型,和存储类型保持一致),否则 stack 底层将默认使用 deque 容器,也就无法用 lsit 容器的内容来初始化 stack 适配器。

    •  还可以用一个 stack 适配器来初始化另一个 stack 适配器,只要它们存储的元素类型以及底层采用的基础容器类型相同即可。例如:
    std::list<int> values{ 1, 2, 3 };
    std::stack<int, std::list<int>> my_stack1(values);
    std::stack<int, std::list<int>> my_stack=my_stack1;
    //std::stack<int, std::list<int>> my_stack(my_stack1);
    

    可以看到,和使用基础容器不同,使用 stack 适配器给另一个 stack 进行初始化时,有 2 种方式,使用哪一种都可以。
    注意,第 3、4 种初始化方法中,my_stack 适配器的数据是经过拷贝得来的,也就是说,操作 my_stack 适配器,并不会对 values 容器以及 my_stack1 适配器有任何影响;反过来也是如此。

    stack容器适配器支持的成员函数

    成员函数 	功能
    empty() 	当 stack 栈中没有元素时,该成员函数返回 true;反之,返回 false。
    size() 		返回 stack 栈中存储元素的个数。
    top() 		返回一个栈顶元素的引用,类型为 T&。如果栈为空,程序会报错。
    push(const T& val) 	先复制 val,再将 val 副本压入栈顶。这是通过调用底层容器的 push_back() 函数完成的。
    push(T&& obj) 	以移动元素的方式将其压入栈顶。这是通过调用底层容器的有右值引用参数的 push_back() 函数完成的。
    pop() 		弹出栈顶元素。
    emplace(arg...) 	arg... 可以是一个参数,也可以是多个参数,但它们都只用于构造一个对象,并在栈顶直接生成该对象,作为新的栈顶元素。
    swap(stack<T> & other_stack) 	将两个 stack 适配器中的元素进行互换,需要注意的是,进行互换的 2 个 stack 适配器中存储的元素类型以及底层采用的基础容器类型,都必须相同。
    
    展开全文
  • Stack

    千次阅读 2018-03-17 16:33:04
    Stackpublic class Stack&lt;E&gt; extends Vector&lt;E&gt;Stack是Vector的子类,是一个标准的先进后出的栈。Stack有几个自己特有的方法。Modifier and TypeMethod and Descriptionbooleanempty() ...

    Stack

    • public class Stack<E>   extends Vector<E>

    Stack是Vector的子类,是一个标准的先进后出的栈。

    Stack有几个自己特有的方法。

    Modifier and TypeMethod and Description
    booleanempty()
    Tests if this stack is empty.
    Epeek()
    Looks at the object at the top of this stack without removing it from the stack.
    Epop()
    Removes the object at the top of this stack and returns that object as the value of this function.
    Epush(E item)
    Pushes an item onto the top of this stack.
    intsearch(Object o)
    Returns the 1-based position where an object is on this stack.

    1. empty()方法,判断stack是否为空,返回值为boolean类型。

    2.peek()方法,返回stack栈顶的元素,如果栈为空,则报错栈为空。

    3.pop()方法,取出栈顶的元素,并且返回该元素。

    4.push()方法,将当前元素压入栈中,int型,string型,char型均可。

    5.search()方法,寻找目标第一个出现的位置距离栈顶的距离,不存在的话返回值为-1。


    代码实现:

    import java.util.Stack;
    public class Test {
        public static void main(String[] args){
            Stack stack=new Stack();
            System.out.println("stack为空吗:"+stack.empty());
            stack.push(1);
            System.out.println("放进一个元素后stack为空吗:"+stack.empty());
            stack.push('1');
            stack.push("1");
            stack.push("aa");
            System.out.println("栈顶元素:"+stack.peek());
            System.out.println("11的位置"+stack.search("11"));
            System.out.println("aa的位置"+stack.search("aa"));
            System.out.println("string型1的位置"+stack.search("1"));
            System.out.println("字符型1的位置"+stack.search('1'));
            System.out.println("整形1的位置"+stack.search(1));
            System.out.println("拿出了"+stack.pop());
            System.out.println("拿出了"+stack.pop());
            System.out.println("拿出了"+stack.pop());
            System.out.println("拿出了"+stack.pop());
            System.out.println("stack为空吗:"+stack.empty());
        }
    }

    运行结果:

    stack为空吗:true
    放进一个元素后stack为空吗:false
    栈顶元素:aa
    11的位置-1
    aa的位置1
    string型1的位置2
    字符型1的位置3
    整形1的位置4
    拿出了aa
    拿出了1
    拿出了1
    拿出了1
    stack为空吗:true



    展开全文
  • Stack<int> stack = new Stack报错原因

    千次阅读 2019-10-23 07:33:13
    标题因为泛型类型必须是对象类型...斜体样式Stack stack = new Stack也是会报错的,应该修改为如下: Stack<Integer> stack = new Stack<Integer>() 这样操作int类型数据就会没有问题,会自动封装。 ...

    标题因为泛型类型必须是对象类型不能死内嵌的数据类型char或者int,所以

    斜体样式Stack stack = new Stack也是会报错的,应该修改为如下:

    Stack<Integer> stack = new Stack<Integer>()
    

    这样操作int类型数据就会没有问题,会自动封装。

    展开全文
  • Stack overflow

    2017-04-07 13:21:30
    Stack overflow /Stack:reserve

    0、问题

    这里写图片描述

    1、解决方案

    这里写图片描述

    2、原因

    vs2008编译默认栈大小为1M, 程序使用的全局变量加静态变量超过1M导致,手动修改栈大小为4194304Byte=4MB
    展开全文
  • Max Stack

    2019-01-13 13:07:43
    Design a max stack that supports push, pop, top, peekMax and popMax. push(x) -- Push element x onto stack. pop() -- Remove the element on top of the stack and return it. top() -- Get the element on...
  • stack栈和stack栈数组

    千次阅读 2017-11-13 20:49:37
    声明一个stackstack<int> s1; stack<string> s2; stack中的操作 stack<int> s; s.push(x) 无返回值,将元素x压栈 s.pop(); 退栈,无返回值 s.top(); 取栈顶元素,返回栈顶元素 s.empty(); 判断栈是否为空,...
  • C++中stack详解

    万次阅读 多人点赞 2018-10-02 00:38:16
    C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。 c++ stl栈stack的头文件为:  #include &lt;stack&gt;  c++ stl栈stack的...
  • Elastic Stack简介

    千次阅读 2021-02-16 21:46:01
    Elastic Stack简介 如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic ...
  • C++ Stack

    千次阅读 2018-02-26 08:49:32
    类型名称:stack&lt;T&gt;或是stack&lt;T,Underlying_Container&gt; 表明是由T类型的元素构成的栈。 头文件:&lt;stack&gt; 已定义类型:value_type、size_type 无迭...
  • 对于Stack类的实现,跟之前链表实现也一样,只是封装成为面向对象的类了 PS:这里是线式存储的类和模板实现,链表式的实际上写法也是一样的 class Stack代码如下: mystack.h #include&lt;stdlib.h&gt;...
  • 155.Min StackStack-Easy)

    千次阅读 2017-04-06 10:03:01
    155. Min Stack
  • Numpy中stack(),hstack(),vstack()函数详解

    万次阅读 多人点赞 2017-06-17 15:41:00
    这三个函数有些相似性,都是堆叠数组,里面最难理解的应该就是stack()函数了,我查阅了numpy的官方文档,在网上又看了几个大牛的博客,发现他们也只是把numpy文档的内容照搬,看完后还是不能理解,最后经过本人代码...
  • stack用法

    千次阅读 2018-05-31 23:34:17
    一、简介 stack是一种容器适配器(STL的容器分为顺序容器和关联容器,容器适配器,是对这两类容器进行包装得到的具有更强的约束力的容器),被设计来用于操作先进后出(FILO)结构的情景,在这种情况下, 元素的...
  • 深度剖析Java集合之Stack

    万次阅读 2020-12-13 13:24:19
    Java 集合框架提供了一个集合Stack,它提供了stack 数据结构的功能 stack 集合实现了数据结构Stack 的定义,底层依赖Vector 实现也就是数组,对栈顶元素的操作实际上是对数组尾部元素的操作,因为这样可以避免数据的...
  • 1、问题描述 启动tomcat部署项目时,报This is very likely to ... Stack trace of thread错误。 29-May-2018 12:30:09.322 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.sta...
  • stack的常见用法

    万次阅读 2018-08-26 15:12:47
    stack翻译为栈,时STL中实现的一个后进先出的容器 1、stack的定义 【头文件】 #include&lt;stack&gt; using namespace; 定义方法与其他容器相同,typename可以任意基本类型数据类型或容器 stack&...
  • Min Stack

    2015-03-26 20:06:57
    问题来源:https://leetcode.com/problems/min-stack/import java.util.Iterator;...import java.util.Stack;/** * * * ClassName MinStack * * * Description Design a stack that supports push, pop,
  • Java 栈 stack方法总结

    万次阅读 多人点赞 2019-01-05 23:19:53
    前言 最近开始在重新刷leetcode,发现之前刷过的很多算法题现在又陆陆续续忘记了。...Stack来自于Vector,那么显然stack的底层实现是数组。 Stack的方法 java中Stack只有一个无参构造函数。 属于stack自...
  • c++ stack

    千次阅读 2017-01-24 23:15:42
    stack s; 构建一个字符型栈 s.push(a[i]); 将a[i]入栈 s.pop(); 将栈顶元素弹出 s.top(); 只读栈顶元素 s.empty(); 当栈内有元素返回false 无元素返回ture #include #include #include #include using ...
  • torch.stack()的官方解释,详解以及例子

    万次阅读 多人点赞 2020-03-30 20:54:05
    stack() cat() 他们的区别参考这个链接区别,但是本文主要说stack()。 前言 该函数是经常出现在自然语言处理(NLP)和图像卷积神经网络(CV)中的基础函数,用来拼接序列化的张量而存在的,相对于cat(),因为stack更...
  • stack

    千次阅读 2016-05-09 19:56:13
    栈(stack)是限定仅在表尾进行插入和删除操作的线性表。
  • ELKstack 中文指南

    热门讨论 2016-02-23 15:42:21
    ELKstack 中文指南,三斗大神著。 ELK Stack 在最近两年迅速崛起, 成为机器数据分析, 或者说实时日志处理领域, 开源界的 第一选择
  • Stack

    万次阅读 2016-05-20 15:29:57
    栈 定义:限定仅在表头进行插入和删除操作的线性表。 特点:一种可以实现“先进后出”的数据结构。 应用场景:函数调用、中断、表达式求值、...// structure of stack typedef struct Stack { PNODE pTop; PNODE p
  • 理解栈stack

    万次阅读 2017-12-26 10:58:42
    Understanding the Stack
  • Scala stack

    2018-09-13 10:23:03
    scala&gt; scala&gt; import scala.collection.mutable.Stack import scala.collection.mutable.Stack scala&...stack: scala.collection.mutable.Stack[Int] = Stack(1, 2, 3) scala...
  • golang package stack

    2019-01-08 15:27:50
    官方文档: https://godoc.org/github.com/go-stack/stack import “github.com/go-stack/stack” package main import ( "fmt" "github.com/go-stack/stack" ) func main() { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 311,548
精华内容 124,619
热门标签
关键字:

stack