更多“在初始化空顺序栈时一般不限定栈的最大容量,因为,栈在使用过程中所需最大空间的大小很难估计。”相关问题
  • 第1题:

    一个栈(Stack)对象有三种状态:S1——栈空;S2——栈非空也非满;S3——栈满。则各个状态的条件如下:

    S1:(t0)创建栈对象时初始化,这是系统做的

    (t1)在S2状态下执行置空运算setEmpty()

    (t2)在S3状态下执行置空运算setEmpty()

    (t3)在S2状态下执行出栈运算Pop()

    S2:(t4)在S1状态下执行进栈运算Push()

    (t5)在S3状态下执行出栈运算Pop()

    S3:(t6)在S2状态下执行进栈运算Push()

    为简化问题,假设栈Stack的容量为2,栈元素的数据类型为整数。

    根据题意,画出栈对象的状态迁移图;


    正确答案:根据题意状态转换图如下:
    根据题意,状态转换图如下:

  • 第2题:

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

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

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

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

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


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

  • 第3题:

    在下面栈的基本运算中,不是加工型运算的是()

    • A、初始化
    • B、进栈
    • C、退栈
    • D、判栈空

    正确答案:D

  • 第4题:

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


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

  • 第5题:

    在一个顺序栈中,若栈顶指针等于(),则为空栈;若栈顶指针等于(),则为满栈。


    正确答案:–1;StackMaxSize-1

  • 第6题:

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


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

  • 第7题:

    假定利用数组a[m]顺序存储一个栈,用top表示栈顶指针,用top= =-1表示空,该数组所能存储的栈的最大长度为m,当()时,再做进栈运算会发生“上溢”。

    • A、top == m - 1
    • B、top == 0
    • C、top == m - 2
    • D、top == 1

    正确答案:A

  • 第8题:

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

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

  • 第9题:

    单选题
    若栈顶指针指向栈顶元素,当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为()。
    A

    n-1

    B

    n

    C

    n+1

    D

    n/2


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

  • 第10题:

    填空题
    在一个顺序栈中,若栈顶指针等于(),则为空栈;若栈顶指针等于(),则为栈满。

    正确答案: —1,maxsize —1
    解析: 暂无解析

  • 第11题:

    单选题
    顺序栈的上溢是指()。
    A

    栈满时作退栈运算

    B

    栈满时作进栈运算

    C

    栈空时作退栈运算

    D

    栈空时作进栈运算


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

  • 第12题:

    单选题
    在下面栈的基本运算中,不是加工型运算的是()
    A

    初始化

    B

    进栈

    C

    退栈

    D

    判栈空


    正确答案: A
    解析: 选项A初始化:加工型运算,其作用是设置一个空栈S。选项B进栈:加工型运算,其作用是将元素x插入栈S中,使x成为栈S的栈顶元素。选项C退栈:加工型运算,其作用是当栈不空时,取栈顶元素,并从栈中删除当前栈顶元素。选项D判栈空:引用型运算,功能是若栈S为空栈,则结果为真;否则结果为假。

  • 第13题:

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

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

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

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

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


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

  • 第14题:

    对于顺序栈和链栈,( )不是两者共有的运算特征。

    A.元素后进先出
    B.入栈时需要判断是否栈满
    C.出栈时需要判断是否栈空
    D.每次只能访问栈顶元素

    答案:B
    解析:
    本题考查数据结构基础知识。
    栈的顺序存储(也称为顺序栈)是指用一组地址连续的存储单元依次存储白栈顶到栈底的数据元素,同时附设指针top指示栈顶元素的位置。在顺序存储方式下,需要预先定义或申请栈的存储空间,也就是说栈空间的容量是有限的。因此在顺序栈中,当一个元素入栈时,需要判断是否栈满(即栈空间中是否有空闲单元),若栈满,则元素入栈会发生上溢现象。
    用链表作为存储结构的栈称为链栈,链表中的结点根据需要动态申请,不存在栈满的情况。由于栈中元素的插入和删除仅在栈顶一端进行,因此不必另外设置头指针,链表的头指针就是栈顶指针。
    无论栈采用哪种存储结构,进行出栈操作时都要判断是否栈空,栈为空时无法完成出栈操作。

  • 第15题:

    已知一个顺序栈*s,栈顶指针是top,它的容量为MAXSIZE,则判断栈空的条件为(),栈满的条件是()


    正确答案:s->top==-1;s->top==MAXSIZE-1

  • 第16题:

    若栈顶指针指向栈顶元素,当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为()。

    • A、n-1
    • B、n
    • C、n+1
    • D、n/2

    正确答案:B

  • 第17题:

    顺序栈的上溢是指()。

    • A、栈满时作退栈运算
    • B、栈满时作进栈运算
    • C、栈空时作退栈运算
    • D、栈空时作进栈运算

    正确答案:B

  • 第18题:

    循环队列的最大存储空间为MaxSize,若队头指针front,队尾指针rear,采用少用一个存储空间以有效地判断栈空或栈满,队空的判定条件为()


    正确答案:rear==front为真

  • 第19题:

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

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

  • 第20题:

    单选题
    假定利用数组a[N]顺序存储一个栈,用top表示栈顶元素的下标位置,用top= =-1表示栈空,用top= =N - 1表示栈满,则该数组所能存储的栈的最大长度为()
    A

    N - 1

    B

    N

    C

    N+1

    D

    N十2


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

  • 第21题:

    单选题
    假定利用数组a[n]顺序存储一个栈,用top表示栈顶指针,用top==n+l表示栈空,该数组所能存储的栈的最大长度为n,则表示栈满的条件是()
    A

    top == -1

    B

    top == 0

    C

    top>l

    D

    top == 1


    正确答案: D
    解析: 栈空是指栈中不含任何数据元素,栈满是指栈中没有任何的空闲空间。根据本题的假设栈顶指针top==n+l表示栈空,可知,该数组将栈底放在下标大的那端,它的下界为1,上界为n,当top=n时存入第一个元素,因为该数组所能存储的栈的最大长度为n,所以,栈满时栈顶指针top应等于1。

  • 第22题:

    填空题
    已知一个顺序栈*s,栈顶指针是top,它的容量为MAXSIZE,则判断栈空的条件为(),栈满的条件是()

    正确答案: s->top==-1,s->top==MAXSIZE-1
    解析: 暂无解析

  • 第23题:

    多选题
    下列说法错误的是(  )。
    A

    利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,这种形式的栈也称为顺序栈。

    B

    top=0时为空栈,元素进栈时指针top不断地减1。

    C

    当top等于数组的最大下标值时则栈满。

    D

    栈不能对输入序列部分或全局起求逆作用


    正确答案: B,C
    解析:

  • 第24题:

    单选题
    判定一个顺序栈S(栈空间大小为n)为空的条件是()。
    A

    S->top==0

    B

    S->top!=0

    C

    S->top==n

    D

    S->top!=n


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