精华内容
下载资源
问答
  • 展开全部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"优化成一个地方。

    }

    展开全文
  • Queue是先进先出的集合而Stack是后进先出的集合。这两个集合在日常的工作中也经常会用到。Queue相当我们去银行柜台排队,大家依次鱼贯而行。Stack象我们家中洗碗,最后洗好的碗叠在最上面,而下次拿的时候是最先拿到...

    Queue是先进先出的集合而Stack是后进先出的集合。这两个集合在日常的工作中也经常会用到。Queue相当我们去银行柜台排队,大家依次鱼贯而行。Stack象我们家中洗碗,最后洗好的碗叠在最上面,而下次拿的时候是最先拿到最后叠上去的碗。了解了这样场景,就很容易明白Stack和Queue可用在哪里了。

    比如我们为医院作一个排队叫号的系统,那肯定是选择Queue对象处理。如果我们要为出牌或下棋准备一个场景,那肯定是选择Stack,因为通过Stack至少可用提供用户悔棋啊。

    以下是Queue的代码演示:

    System.Collections.Queue q = new System.Collections.Queue();

    for (int i = 0; i <= 10; i++)

    {

    q.Enqueue(i);//入队

    }

    System.Console.WriteLine(q.Count);

    while (q.Count > 0)

    {

    System.Console.WriteLine(q.Dequeue());//出队

    }

    运行的结果如图3.1.27所示:

    236f4f4b7790a7f4abf404440b7198ae.png

    图3.1.27

    以下是Stack的代码演示:

    System.Collections.Stack s = new System.Collections.Stack();

    for (int i = 0; i <= 10; i++)

    {

    s.Push(i);//入栈

    }

    System.Console.WriteLine(s.Count);

    while (s.Count > 0)

    {

    System.Console.WriteLine(s.Pop());//出栈

    }

    虽然放置元素的次序和Queue一样,但取出的顺序正好相反,如图3.1.28:

    4c3622cd8f9136b109f89b5c5c56927c.png

    图3.1.28

    展开全文
  • 栈:后进先出(LIFO:last in first out) 例如:自助餐中的自取餐盘 面试题目:有六个元素6 5 4 3 2 1 的顺序进栈,哪一个不是合法的出栈序列: A. 5 4 3 6 1 2 B.4 5 3 2 1 6 C.3 4 6 5 2 1 D.2 3 4 1 5 6 ...

    栈:后进先出(LIFO:last in first out)

    例如:自助餐中的自取餐盘

    面试题目:有六个元素6 5 4 3 2 1 的顺序进栈,哪一个不是合法的出栈序列:

    A. 5 4 3 6 1 2  B.4 5 3 2 1 6 C.3 4 6 5 2 1 D.2 3 4 1 5 6 

    解析:进入栈的顺序保持6 5 4 3 2 1 ,3出栈所以栈中现在是从栈底-->栈顶依次为6 5 4 3 ,6不可能在5之前出栈。答案是3 4 6 5 2 1 。

    十进制转化为二进制:DEC:100 Bin:110 0100

    Demo:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>栈的封装</title>
        </head>
        <body>
            <script>
                // Method:和某一个对象实例有关联
                //function
                //栈的封装
                function Stack(){
                    //栈的属性
                    this.items = []
                    //栈的相关操作
                    //1.将元素压入到栈
                    // ths.push = function (){//不太推荐,浪费内存.会给每一个实例都创建一个方法
                    // }
                    Stack.prototype.push = function (element){
                        this.items.push(element)
                    }
                    //2.从栈中取出元素,pop()取出数组中的末尾一个元素
                    Stack.prototype.pop = function(){
                        return this.items.pop()
                    }
                    //3.查看一下栈的元素
                    Stack.prototype.peek = function(){
                        return this.items[this.items.length-1]
                    }
                    //4.判断是否为空
                    Stack.prototype.isEmpty = function (){
                        return this.items.length == 0
                    }
                    //5.获取栈中元素的个数
                    Stack.prototype.size = function(){
                        return this.items.length
                    }
                    //6.toString方法
                    Stack.prototype.toString = function(){
                        var newString = ''
                        for(var i=0; i<this.items.length;i++){
                            newString += this.items[i] + ' '
                        }
                        return newString
                    }
                }
                //栈的使用
                var s = new Stack()
                s.push(21)
                s.push(3)
                s.push(45)
                s.push(9)
                alert(s)
                alert(s.pop())
                alert(s.peek())
                
                //函数:将十进制转换为二进制
                function dec2bin(decNumber){
                    //1.定义一个栈对象
                    var stack = new Stack()
                    while(decNumber > 0){
                        //2.1获取余数并放入栈中
                        stack.push(decNumber%2)
                        //2.2获取整除后的结果,作为下一个计算的数字
                        decNumber = Math.floor(decNumber / 2)
                    }
                    //3.从栈中取出0和1
                    var binaryString = ''
                    while (!stack.isEmpty()){
                        binaryString +=stack.pop()
                    }
                    return binaryString
                }
                alert(dec2bin(100))
            </script>
        </body>
    </html>

     

     

    展开全文
  • 栈的元素存储与利用是遵循后进先出(LIFO)的,如下图,我们可以用一个半开口的方框表示栈,开口的一端称为栈顶,就是这端进行着压栈(push)和出栈(pop)操作。 对于给定的待判断序列,比如这里的A选项453126,我们可以...
  • 这些两种基本操作的操作数(参数)的不同就构成了先进先出后进先出的效果. 例如同样是在线性表中 “按顺序” 插入1,2,3,4 对于栈,只允许在尾部删除,所以先出栈的将会是4,即后进先出 形象点说,栈只有一个开口,先进去...

    从定义来说,

    限定仅在表尾进行插入或删除操作的线性表。也就是说它有两个操作,且操作数都在线性表尾部

    队列

    是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。

    这也就是说它的插入和删除操作的对象是不同的

    这些两种基本操作的操作数(参数)的不同就构成了先进先出与后进先出的效果.

    例如同样是在线性表中 “按顺序” 插入1,2,3,4

    对于栈,只允许在尾部删除,所以先出栈的将会是4,即后进先出
    形象点说,栈只有一个开口,先进去的就倒最底下,后进来的就在前面,要是拿出去的话,肯定是从开口端拿出去,所以说先进后出,后进先出。

    对于队列,只允许在头部删除,所以先出队的是1,即先进先出

    https://blog.csdn.net/yang_study_first/article/details/103933409?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%A0%88%20%E9%98%9F%E5%88%97&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-103933409.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187

    https://blog.csdn.net/Marmara01/article/details/89014828?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%A0%88%20%E9%98%9F%E5%88%97&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-89014828.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187

    展开全文
  • JavaScript中的栈的实现 function Stack() { var items = []; //使用数组存储数据 //push方法向栈里压入一个元素 ... //pop方法把栈顶的元素弹 this.pop = function(item) { return items.pop
  • 栈——后入先出的数据结构(LIFO)

    千次阅读 2020-04-30 18:34:31
    结点的处理顺序是完全相反的顺序,就像它们被添加到栈中一样,它是后进先出(LIFO)。这就是我们在 DFS 中使用栈的原因。 DFS - 模板 I 正如我们在本章的描述中提到的,在大多数情况下,我们在能使用 BFS 时也可以...
  • 栈:后进先出的线性表如何实现增删查1)栈是什么?2)栈的基本操作 线性表是使用非常广泛的一类数据结构,它对数据的顺序非常敏感,而且它对数据的增删操作非常灵活。在有序排列的数据中,可以灵活的执行增删操作,...
  • java堆栈 先进后出是什么意思

    千次阅读 2021-03-04 06:32:52
    java堆栈 先进后出是什么意思java堆栈中数据怎么存放JVM(虚拟机)在启动后,会在内存较低位置建立一块区域,作为堆。并有默认的大校当不够时,自动向下延伸。会在内存较高位置建立一块区域,作为栈,当不够时,自动...
  • 线性表是使用非常广泛的一类数据结构,它对数据的顺序非常敏感,而且它对数据的增删...栈是特殊的线性表,栈的数据结点必须后进先出后进意思是,栈的数据新增操作只能在末端进行,不允许在栈的中间某个结点后新增
  • 建立先进先出和先进后出链表

    千次阅读 2018-09-29 14:41:38
    先入先出 生成单链表 1.生成新节点 p=malloc(链表大小) 给新节点赋值 p-&amp;gt;data ,p-&amp;gt;next =NULL; 2.添加到表尾 tail-&amp;gt;next = p; 3.设置新表尾 tail = p; 类C语言描述 ...
  • 1、队列是先进先出,栈是后进先出。 2、队列的操作还是入队列和出队列,入队列就把数据放到队列的尾部,出队列就把队列中的第一个数据拿出来。 队列需要两个标识,top和tail,分别标识队列的第一个元素和最后一个...
  • 看下数据结构中一种重要的数据存储形式,链表,下面两段是来自百度百科: 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每...
  • GC(Garbage Collection)是各大语言的宠儿,也是计算机科学...从最早的串行到高顿吞吐量的并行,为了解决高延迟又演化了CMS(Concurrent Mark Sweep),为了解决碎片的问题,又开发了G1.为什么我们需要进行GC呢在早期...
  • 平仓后进才损失27,500元(损失高达98.2%)。相比之下,直接购买股票,进才只损失20万元(损失5%)。  利用期权高杠杆的特性,进才的损益率被大幅放大了。  看涨股票策略 使用资金 (10万股) 情形1:股价上涨至45元 ...
  • 堆栈中的物体具有一个特性:最后一个放入堆栈中的物体总是被最先拿出来,这个特性通常称为后进先处(LIFO)队列.堆栈中定义了一些操作.两个最重要的是PUSH和POP.PUSH操作在堆栈的顶部加入一个元素.POP操作相反,在堆栈...
  • 栈(stack)是一个项的有序集合,其中添加移除新项...LIFOLIFO,即后进先出的排序原则。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。栈的底部很重要,因为在栈中靠近底部的项是存储时间最长...
  • java stack什么意思

    2021-03-15 03:48:09
    Java Stack 类stack(栈)是Vector的一个子类,它实现了一个标准的后进先出的栈。public class Stackextends Vector堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己...
  • 堆栈是什么意思

    千次阅读 2017-04-29 23:09:50
    堆栈是一种执行“后进先出”算法的数据结构。设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的...
  • 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型...
  • 我们将允许插入的删除的一端叫做栈顶,另外一端叫做栈底,栈是一种后进先出的数据结构,所以称为后进先出的线性表,简称LIFO结构。 空栈:不含任何数据元素的栈。 注意:1、栈是一个线性表,栈里面的元素具有线性...
  • python实现堆栈堆栈是一个后进先出的数据结构,其工作方式就像一堆汽车排队进去一个死胡同里面,最先进去的一定是最后出来。我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()和pop()方法可以...
  • java什么是栈

    2021-03-04 01:15:21
    栈:实际上就是满足后进先出的性质,是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 (推荐学习:java课程)栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量...
  • 这个算是数据结构的内容讲解的是一个叫做栈类型的数据结构,这个数据结构的特点就是后进先出--最后放进去的数据最先拿出来。pop函数就是拿出数据的操作,push是放入是数据的操作。内容拓展:pop函数呵push函数的使用...
  • 栈(先进后

    千次阅读 2017-12-18 21:01:26
    今天刚学栈,就简单说一下自己的理解,首先,栈遵守一个原则,就是先进后出,后进先出。打个比方,就像一个水瓶,要想喝到最底部的水(在不打破瓶子本身的情况下),就必须先将上面的水喝掉,这就可以类似栈的作用...
  • 堆栈是一种执行“后进先出”算法的数据结构。设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的...
  • 什么是数据结构?

    千次阅读 2019-06-19 20:25:39
    什么是数据结构?数据结构是什么? 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据...
  • 写代码,基于redis的列表实现 先进先出后进先出队列、优先级队列。 如何基于redis实现消息队列? 如何基于redis实现发布和订阅?以及发布订阅和消息队列的区别? 什么是codis及作用? 什么是twemproxy及作用? 写...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,230
精华内容 5,692
关键字:

后进先出是什么意思