精华内容
下载资源
问答
  • 形象点说,栈只有一个开口,先进去的就倒最底下,后进来的就在前面,要是拿出去的话,肯定从开口端拿出去,所以说先进后出,后进先出。 转自百度知道——影の黑骑士
    形象点说,栈只有一个开口,先进去的就倒最底下,后进来的就在前面,要是拿出去的话,肯定是从开口端拿出去,所以说先进后出,后进先出。
    转自百度知道——影の黑骑士 
    
    展开全文
  • 展开全部1、栈32313133353236313431303231363533e58685e5aeb931333365643662中的“先进后出,后进先出意思是:栈的概念弹压,就像子弹壳装弹,一粒一粒压进去,但是打出来的时候从上面打出来的,最先压进去的最后弹...

    展开全部

    1aca4d86dedf53b1409405ff6a45c7c4.png

    1、栈32313133353236313431303231363533e58685e5aeb931333365643662中的“先进后出,后进先出”意思是:

    栈的概念是弹压,就像子弹壳装弹,一粒一粒压进去,但是打出来的时候是从上面打出来的,最先压进去的最后弹出来,如果进去顺序是123,打出来顺序是321,这就是后进先出。

    2、栈的定义:

    栈是限定仅在表尾进行插入和删除操作的线性表。“栈”者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。

    3、栈与队列的区别:

    队列的概念就是我们平时排队,按次序来,你排在第1个,那你就第一个轮到,就是先进先出,先到先来。

    4、栈在计算机领域里解释:

    栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。

    栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。

    栈可以用来在函数调用的时候存储断点,做递归时要用到栈!

    5、堆和栈的区别:

    (1)操作系统方面区别:

    在使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

    (2)数据结构方面区别:

    还有就是数据结构方面的堆和栈,这些都是不同的概念。这里的堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权;栈实际上就是满足先进后出的性质的数学或数据结构。虽然堆栈,堆栈的说法是连起来叫,但是他们还是有很大区别的,连着叫只是由于历史的原因。

    6、程序例子

    //main.cpp

    int a = 0; 全局初始化区

    char *p1; 全局未初始化区

    main()

    {

    int b; 栈

    char s[] = "abc"; 栈

    char *p2; 栈

    char *p3 = "123456"; 123456在常量区,p3在栈上。

    static int c =0; 全局(静态)初始化区

    p1 = (char *)malloc(10);

    p2 = (char *)malloc(20);

    分配得来得10和20字节的区域就在堆区。

    strcpy(p1, "123456"); 123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。

    }

    展开全文
  • 线性表使用非常广泛的一类数据结构,它对数据的顺序非常敏感,而且它对数据的增删...栈特殊的线性表,栈的数据结点必须后进先出。后进的意思是,栈的数据新增操作只能在末端进行,不允许在栈的中间某个结点后新增

    线性表是使用非常广泛的一类数据结构,它对数据的顺序非常敏感,而且它对数据的增删操作非常灵活。在有序排列的数据中,可以灵活的执行增删操作,就好像是为排好队的数据增加了插队的入口。这既是灵活性也是缺陷,原因在于它的灵活性在某种程度上破坏了数据的原始顺序。在某些需要严格遵守数据处理顺序的场景下,我们就需要对线性表予以限制了。经过限制后的线性表,它们通常会被赋予一些新的名字,比如:栈。

    什么是栈

    栈是特殊的线性表,栈的数据结点必须后进先出。后进的意思是,栈的数据新增操作只能在末端进行,不允许在栈的中间某个结点后新增数据。先出的意思是,栈的数据删除操作也只能在末端进行,不允许在栈的中间某个结点后删除数据。
    也就是说,栈的数据新增和删除操作只能在这个线性表的表尾进行,即在线性表的基础上加了限制。如下图所示:
    在这里插入图片描述
    宏观上来看,与数组或链表相比,栈的操作更为受限,那为什么我们要用这种受限的栈呢?其实,单纯从功能上讲,数组或者链表可以替代栈。然而问题是,数组或者链表的操作过于灵活,这意味着,它们过多暴露了可操作的接口。这些没有意义的接口过多,当数据量很大的时候就会出现一些隐藏的风险。一旦发生代码 bug 或者受到攻击,就会给系统带来不可预知的风险。虽然栈限定降低了操作的灵活性,但这也使得栈在处理只涉及一端新增和删除数据的问题时效率更高。

    举个实际的例子,浏览器都有页面前进和后退功能,这就是个很典型的后进先出的场景。假设你先后访问了五个页面,分别标记为 1、2、3、4、5。当前你在页面 5,如果执行两次后退,则退回到了页面 3,如果再执行一次前进,则到了页面 4。处理这里的页面链接存储问题,栈就应该是我们首选的数据结构。

    栈既然是线性表,那么它也包含了表头和表尾。不过在栈结构中,由于其操作的特殊性,会对表头和表尾的名字进行改造。表尾用来输入数据,通常也叫作栈顶(top);相应地,表头就是栈底(bottom)。栈顶和栈底是用来表示这个栈的两个指针。跟线性表一样,栈也有顺序表示和链式表示,分别称作顺序栈和链栈。

    栈的基本操作

    如何通过栈这个后进先出的线性表,来实现增删查呢?初始时,栈内没有数据,即空栈。此时栈顶就是栈底。当存入数据时,最先放入的数据会进入栈底。接着加入的数据都会放入到栈顶的位置。如果要删除数据,也只能通过访问栈顶的数据并删除。对于栈的新增操作,通常也叫作 push 或压栈。对于栈的删除操作,通常也叫作 pop 或出栈。对于压栈和出栈,我们分别基于顺序栈和链栈进行讨论
    在这里插入图片描述
    在这里插入图片描述

    顺序栈

    栈的顺序存储可以借助数组来实现。一般来说,会把数组的首元素存在栈底,最后一个元素放在栈顶。然后定义一个 top 指针来指示栈顶元素在数组中的位置。假设栈中只有一个数据元素,则 top = 0。一般以 top 是否为 -1 来判定是否为空栈。当定义了栈的最大容量为 StackSize 时,则栈顶 top 必须小于 StackSize。

    当需要新增数据元素,即入栈操作时,就需要将新插入元素放在栈顶,并将栈顶指针增加 1。

    删除数据元素,即出栈操作,只需要 top - 1 就可以了。

    对于查找操作,栈没有额外的改变,跟线性表一样,它也需要遍历整个栈来完成基于某些条件的数值查找。

    链栈

    关于链式栈,就是用链表的方式对栈的表示。通常,可以把栈顶放在单链表的头部,如下图所示。由于链栈的后进先出,原来的头指针就显得毫无作用了。因此,对于链栈来说,是不需要头指针的。相反,它需要增加指向栈顶的 top 指针,这是压栈和出栈操作的重要支持。
    在这里插入图片描述
    对于链栈,新增数据的压栈操作,与链表最后插入的新数据基本相同。需要额外处理的,就是栈的 top 指针。如下图所示,插入新的数据,则需要让新的结点指向原栈顶,即 top 指针指向的对象,再让 top 指针指向新的结点。
    在这里插入图片描述

    在链式栈中进行删除操作时,只能在栈顶进行操作。因此,将栈顶的 top 指针指向栈顶元素的 next 指针即可完成删除。对于链式栈来说,新增删除数据元素没有任何循环操作,其时间复杂度均为 O(1)。

    对于查找操作,相对链表而言,链栈没有额外的改变,它也需要遍历整个栈来完成基于某些条件的数值查找。

    通过分析你会发现,不管是顺序栈还是链栈,数据的新增、删除、查找与线性表的操作原理极为相似,时间复杂度完全一样,都依赖当前位置的指针来进行数据对象的操作。区别仅仅在于新增和删除的对象,只能是栈顶的数据结点。

    总结

    栈继承了线性表的优点与不足,是个限制版的线性表。限制的功能是,只允许数据从栈顶进出,这也就是栈后进先出的性质。不管是顺序栈还是链式栈,它们对于数据的新增操作和删除操作的时间复杂度都是 O(1)。而在查找操作中,栈和线性表一样只能通过全局遍历的方式进行,也就是需要 O(n) 的时间复杂度。

    栈具有后进先出的特性,当你面对的问题需要高频使用新增、删除操作,且新增和删除操作的数据执行顺序具备后来居上的相反关系时,栈就是个不错的选择。例如,浏览器的前进和后退,括号匹配等问题。栈在代码的编写中有着很广泛的应用,例如,大多数程序运行环境都有的子程序的调用,函数的递归调用等。这些问题都具有后进先出的特性。

    展开全文
  • java堆栈 先进后出是什么意思java堆栈中数据怎么存放JVM(虚拟机)在启动后,会在内存较低位置建立一块区域,作为堆。并有默认的大校当不够时,自动向下延伸。会在内存较高位置建立一块区域,作为栈,当不够时,自动...

    java堆栈 先进后出是什么意思

    java堆栈中数据怎么存放

    JVM(虚拟机)在启动后,会在内存较低位置建立一块区域,作为堆。并有默认的大校当不够时,自动向下延伸。会在内存较高位置建立一块区域,作为栈,当不够时,自动向上延伸。当堆和栈延伸到一起时,就会引发内存溢出错误。

    526b9b8b1d02783f6acb76405601fef5.png

    谁可以简单的给我分别解释下堆和栈的含义.要分别解释喔.不要讲区别

    堆栈是一种执行“后进先出”算法的数据结构。 设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略校现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之。

    堆栈是一种数据结构,特点是堆栈中的数据先进后出,或者说后进先出。你可以想象堆栈是个子弹夹,先压入的子弹放在弹夹下面,后压入的子弹会在弹夹的上面,打枪或者卸子弹的时候先出上面的子弹,下面的子弹才能出来。

    谁能通俗易懂的解释一下 不要粘贴别人的话

    java课设报告图形化显示数据进栈出栈过程

    java课设报告图形化显示数据进栈出栈过程急。。。

    //栈接口 /** * 2016/10/31 10:19 * * @author 3306 TODO */ public interface StackInterface { /** * 压入元素 * * @param element 元素 */ void push(T element); /** * 弹出栈顶元素 * * @return T */ T pop(); }//固定长度栈 /** * 2016/10

    你对第一个str引用变量存放位置的解释有一点欠妥的地

    String str = "abc"; String str = new String("abc"); 对于第一种创献丑了:

    java中所有变量(包括你上述提及的str引用类型变量)的存放位置都取决于该 变量的声明位置,而New出的对象则始终被JVM存放在堆中,创建的字串常 量则始终被JVM存放在数据段区常量池中。

    展开全文
  • 堆栈是什么意思

    千次阅读 2017-04-29 23:09:50
    堆栈一种执行“后进先出”算法的数据结构。设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的...
  • 栈(stack)一个项的有序集合,其中添加移除新项...LIFOLIFO,即后进先出的排序原则。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。栈的底部很重要,因为在栈中靠近底部的项存储时间最长...
  • 栈(stack)一个项的有序集合,其中添加移除新项...LIFOLIFO,即后进先出的排序原则。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。栈的底部很重要,因为在栈中靠近底部的项存储时间最长...
  • Java Stack 类stack(栈)Vector的一个子类,它实现了一个标准的后进先出的栈。public class Stackextends Vector堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己...
  • (栈,先进后出,后进先出)。main函数调用main 中查找内建函数print压栈,将常量字符串压栈,调用函数,弹出栈顶。main中全局函数foo1压栈,将常量100,101压栈,调用函数foo1,创建栈帧。Print函数压栈,字符串和变量...
  • 后进先出,先进者后出,这就是典型的“栈”结构。从栈的操作特性上来看,栈一种“操作受限”的线性表,只允许在一端插入和删除数据。我第一次接触这种数据结构的时候,就对它存在的意义产生了很大的疑惑。因为我...
  • js执行栈啥意思

    2021-03-01 22:10:42
    那么这个"先进后出,后进先出"到底指的是什么呢 是这个 可以看到代码确实是自上而下执行的,先打印的bar1,再打印的foo,那这不就是先调用的先执行吗, "先进后出,后进先出"到底指的是什么呢 它指的是执行完,可以...
  • 如果你学过数据结构,就一定会遇到“堆”,"栈","堆栈","队列",而最关键的是这些到底是什么意思?最关键的是即使你去面试,这些都...要点:堆:顺序随意 栈:后进先出(Last-In/First-Out) 堆 堆:什么是堆?...
  • 如果你学过数据结构,就一定会遇到“堆”,“栈”,...**栈:后进先出(Last-In/First-Out) 堆 堆:什么是堆?又该怎么理解呢? ①堆通常一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总
  • 后进先出意思就是后来进来的先出去。现实生活中有很多后进先出的例子,比如打印机的纸,餐馆的盘子等等。栈可以基于线性表或者链表创建。栈一种特殊的线性表,其插入(入栈,压栈)与删除(出栈,弹栈)都在同一段...
  • 先进后出,后进先出 队列 -> 先进先出,后进后出 从字面意思也不难理解,队列队列就是排队的含义。基本结构根据队列的性质我们就可以设计队列的接口函数。接口函数程序:public interface Queu...
  • 先进后出,后进先出 队列 -> 先进先出,后进后出 从字面意思也不难理解,队列队列就是排队的含义。基本结构根据队列的性质我们就可以设计队列的接口函数。接口函数程序:public interface Queu...
  • 栈(stack)一个项的有序集合,其中添加移除新项...LIFOLIFO,即后进先出的排序原则。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。栈的底部很重要,因为在栈中靠近底部的项存储时间最长...
  • 浅析数据结构之“栈”和“队列” 引言: 以前刚开始学习数据结构...栈,是一种非常基本的数据结构,它的特点就是先进后出,后进先出,那么”先进后出,后进先出是什么意思呢?形象的说“栈”就是一口井,“栈”有两个
  • 1、 UINavigationController 一个容器类。里面盛放的UIViewController。...这个容器在管理UIViewController时,遵循栈管理的原则(后进先出)。 UIViewController的入栈操作: UIViewController *aViewContr...
  • 1、 UINavigationController 一个容器类。里面盛放的UIViewController。...这个容器在管理UIViewController时,遵循栈管理的原则(后进先出)。  UIViewController的入栈操作: UIViewController *aVie
  • UINavigationController 部分 1、 UINavigationController 一个容器类。里面盛放的UIViewController。...这个容器在管理UIViewController时,遵循栈管理的原则(后进先出)。 UIViewController的入栈操作:...
  • 数据结构探险—栈篇 本文及代码收录于个人编程笔记(整理中,欢迎Star):...什么是栈? 古代栈就是牲口棚的意思。 栈一种机制:后进先出 LIFO(last in first out) 比如电梯,先进电梯位于电...
  • 堆栈溢出

    千次阅读 2012-11-21 12:03:31
    Q:什么是堆栈溢出?堆栈溢出是什么意思? 堆栈是一种计算机内存的管理方式,在计算机领域,堆栈是一个...要点:堆:顺序随意栈:后进先出(Last-In/First-Out) 。 从物理上讲,堆栈是就是一段连续分配的内存空间。
  • 首先说一下Task一个什么概念吧:Task一个包括activity的列表。没 错。简单的说就是依照启动的先后来排队的一...它具有栈的特性:后进先出。 那么。根据什么来把activity指定给某个Task? ------默认情况下,依据...
  • 栈的基本概念 栈是什么 线性表增加和删除操作限制在一端进行,就被称为栈。 那为什么要使用栈?其实,单纯从功能上讲,数组或者链表可以替代栈。...具体而言,栈的数据结点必须后进先出。后进的意思是,栈的数据新
  • C++ ---队列(queue)

    2021-02-18 11:19:31
    先进先出后进后出。 什么意思呢? 队列只能出队最顶层,进队最底层。 比如: a(加入a) b a(加入b) c b a(加入c) c b(踢掉a) c(踢掉b) (踢掉c) 踢掉的顺序和加入的顺序一样的。 命令 如果以a为一个队列,b为一个...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

后进先出是什么意思