为了减少溢出的可能性和增加内存空间的利用率,由两个栈共享一片连续的内存空间时,应将两栈的栈底分设在这片内存空间的两端。在这种情况下,会产生溢出情况的是(45)。A.两个栈的栈顶在栈空间的某一个位置相遇B.两个栈的栈顶同时到达栈空间的中心C.一个栈的栈顶到达空间的中心点D.两栈均不为空,且一个栈的栈顶到达另一个栈的栈底

题目

为了减少溢出的可能性和增加内存空间的利用率,由两个栈共享一片连续的内存空间时,应将两栈的栈底分设在这片内存空间的两端。在这种情况下,会产生溢出情况的是(45)。

A.两个栈的栈顶在栈空间的某一个位置相遇

B.两个栈的栈顶同时到达栈空间的中心

C.一个栈的栈顶到达空间的中心点

D.两栈均不为空,且一个栈的栈顶到达另一个栈的栈底


相似考题
参考答案和解析
正确答案:A
解析:本题考查堆栈的溢出问题。栈的溢出是指存储空间用完。题目中说两个栈共享一片连续的内存空间,并将两栈的栈底分设在这片内存空间的两端,往这两个栈中添加元素时,栈顶指针都往内存空间的中间位置移动,如果不停地往两个栈中添加元素,这两个栈的栈顶肯定会在内存空间的某一个位置相遇,这时说明存储空间被用完,如果还继续往栈中添加元素,就已经没有空间存放了,只能产生溢出。
更多“为了减少溢出的可能性和增加内存空间的利用率,由两个栈共享一片连续的内存空间时,应将两栈的栈底 ”相关问题
  • 第1题:

    两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。()


    正确答案:对

  • 第2题:

    为了增加内存空间的利用率和减小溢出的可能性,由两个栈共享一片连续的内存空间时,应将两个栈的栈底分划设在这片内存空间的两端。如此只有当( )时,才产生上溢。

    A.两个栈的栈顶同时到达栈空间的中心点

    B.两个栈的栈顶在栈空间的某一位置相遇

    C.其中一个栈的栈顶到达栈空间的中心点

    D.两个栈不空,且一个栈的栈顶到达另一个栈的栈底


    正确答案:B
    解析:在一个程序中需要同时使用具有相同成分类型的两个栈时,为避免造成存储空间的浪费,应采用双进栈操作。为两个栈共同开辟一个连续的存储空间,一个栈的栈底为该空间的始端,另一个栈的栈底为该存储空间的末端。当元素进栈时都从此存储空间的两端向中间“延伸”。如此,只有当两个栈的栈顶在该存储空间的某处相遇时,才会发生上溢。

  • 第3题:

    设用数组A[1,n]作为两个栈S1、S2的共用存储空间,对任一个栈,只有当数组A[1,n]全满时才不作入栈操作,则分配这两个栈空间的最佳方案是()。

    A.S1的栈底位置设为1,S2的栈底位置设为n
    B.S1的栈底位置设为n/2,S2的栈底位置设为n/2+1
    C.S1的栈底位置设为1,S2的栈底位置设为n/2
    D.S1的栈底位置设为n/2,S2的栈底位置设为1

    答案:A
    解析:
    由于栈中元素个数不固定,因此如果将栈底设在中间位置,固定了栈中元素的个数,不能满足只有当数组全满时才不作入栈操作的要求。

  • 第4题:

    栈中能插入删除的一端和另一端分别叫()。

    • A、栈顶 栈底
    • B、栈底栈中
    • C、栈中 栈顶
    • D、以上 都不对

    正确答案:A

  • 第5题:

    为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的()分别设在这片内存空间的两端,这样,当()时,才产生上溢。


    正确答案:栈底;两个栈的栈顶在栈空间的某一位置相遇

  • 第6题:

    36、对于一个栈做进栈运算时,应先判断栈是否为(),做出栈运算时,应先判断别栈是否(),当栈中元素为m时,做栈运算时发生上溢,则说明栈的可用最大容量为()。为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一片连续的内存空间时,应将两栈的()分别设在这片内存空间的两端,这样只有当()时才发生上溢。


    正确答案:栈满;栈空;m;栈底;两栈和栈顶空间的某一个位置

  • 第7题:

    填空题
    36、对于一个栈做进栈运算时,应先判断栈是否为(),做出栈运算时,应先判断别栈是否(),当栈中元素为m时,做栈运算时发生上溢,则说明栈的可用最大容量为()。为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一片连续的内存空间时,应将两栈的()分别设在这片内存空间的两端,这样只有当()时才发生上溢。

    正确答案: 栈满,栈空,m,栈底,两栈和栈顶空间的某一个位置
    解析: 暂无解析

  • 第8题:

    填空题
    为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的()分别设在这片内存空间的两端,这样,当()时,才产生上溢。

    正确答案: 栈底,两个栈的栈顶在栈空间的某一位置相遇
    解析: 暂无解析

  • 第9题:

    填空题
    C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和()区。

    正确答案: 代码
    解析: 暂无解析

  • 第10题:

    单选题
    堆和栈的区别正确的是()
    A

    对于栈来讲,我们需要手工控制,容易产生memory leak。

    B

    对于堆来说,释放工作由编译器自动管理,无需我们手工控制

    C

    在Windows下,栈是向高地址扩展的数据结构,是连续的内存区域,栈顶的地址和栈的最大容量是系统预先规定好的。

    D

    对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。


    正确答案: C
    解析: 暂无解析

  • 第11题:

    单选题
    若用数组S[0..n-1]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是()。
    A

    S1的栈底位置为0,S2的栈底位置为n-1

    B

    S1的栈底位置为0,S2的栈底位置为n/2-1

    C

    S1的栈底位置为1,S2的栈底位置为n

    D

    S1的栈底位置为1,S2的栈底位置为n/2


    正确答案: B
    解析: 暂无解析

  • 第12题:

    单选题
    若栈采用顺序存储方式存储,现两栈共享空间V[1  m],top[1].top[2]分别代表第1和第2个栈的栈顶,栈1的底在V[1],栈2的底在V[m],则栈满的条件是(  )。
    A

    │top[2]-top[1]∣=0

    B

    top[1]+1=top[2]

    C

    top[1]+top[2]=m

    D

    top[1]=top[2]


    正确答案: A
    解析:

  • 第13题:

    使用两个栈共享一片内存空间时,当(53)时,才产生上溢。

    A.两个栈的栈顶同时到达这片内存空间的中心点

    B.其中一个栈的栈顶到达这片内存空间的中心点

    C.两个栈的栈顶在这片内存空间的某一位置相遇

    D.两个栈均不空,且一个栈的栈顶到达另一个栈的栈底


    正确答案:C
    解析:由于两个栈共享一片内存空间,因此只有当两个栈的栈顶在这片内存空间的某一位置相遇,才表示已满,产生上溢。

  • 第14题:

    为了减少栈溢出的可能性,可让两个栈共享一片连续内存空间,两个栈的栈底分别设在这片空间的两端,这样,只有______时才可能产生上溢。

    A.两个栈的栈顶在栈空间的某一位置相遇

    B.其中一个栈的栈顶到达栈空间的中心点

    C.两个栈的栈顶同时到达栈空间的中心点

    D.两个栈均不为空,且一个栈的栈顶到达另一个栈的栈底


    正确答案:A
    解析:两栈共享连续存储空间,两个栈的栈底分别设在这个存储空间的两端的存储结构中,为了使两栈的空间能够做到互补余缺,减少溢出的可能性,两个栈的栈满溢出都不能按位置判别,仅当两栈的栈顶相遇时,才可能栈满溢出。选项B、C、D都是按栈顶位置来判别是否不产生上溢,因此是错误的。选项A符合上述判别规则,即两个栈的栈项在栈空间的某一位置相遇时才可能产生上溢。

  • 第15题:

    栈的应用比较广泛,入栈和出栈都在栈的一端,这端称为()。

    • A、栈顶
    • B、栈底
    • C、栈中
    • D、都不对

    正确答案:A

  • 第16题:

    栈的插入和删除操作在()进行。

    • A、栈顶
    • B、栈底
    • C、栈顶或栈底
    • D、任意位置

    正确答案:A

  • 第17题:

    C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和()区。


    正确答案:代码

  • 第18题:

    堆和栈的关系正确的是()。

    • A、两者是同一个概念的不同表述
    • B、栈和堆是用来存放局部变量的
    • C、栈溢出漏洞可以利用,而堆溢出漏洞不能被利用
    • D、堆和栈都是内存片段

    正确答案:D

  • 第19题:

    填空题
    在作进栈运算时,应先判别栈是否(),在作退栈运算时应先判别栈是否()。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为()。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的()分别设在这片内存空间的两端,这样,当()时,才产生上溢。

    正确答案: 满,空,n,栈底,两个栈的栈顶在栈空间的某一位置相遇
    解析: 暂无解析

  • 第20题:

    判断题
    两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第21题:

    单选题
    若栈采用顺序存储方式存储,现两栈共享空间V[1..m],topi]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。
    A

    Itop[2]-top[1]==0

    B

    top[l]+l==top[2]

    C

    top[l]+top[2]==m

    D

    top[l]==top[2]


    正确答案: D
    解析:

  • 第22题:

    单选题
    栈的插入和删除操作在()进行。
    A

    栈顶

    B

    栈底

    C

    栈顶或栈底

    D

    任意位置


    正确答案: A
    解析: 暂无解析

  • 第23题:

    单选题
    设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是()。
    A

    S1的栈底位置为0,S2的栈底位置为n-1

    B

    S1的栈底位置为0,S2的栈底位置为n/2

    C

    S1的栈底位置为0,S2的栈底位置为n

    D

    S1的栈底位置为0,S2的栈底位置为1


    正确答案: D
    解析: 两栈共享空间首先两个栈是相向增长的,栈底应该分别指向两个栈中的第一个元素的位置,并注意C++中的数组下标是从0开始的。