一个栈(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,栈元素的数据类型为整数。根据

题目

一个栈(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,栈元素的数据类型为整数。

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


相似考题
更多“一个栈(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,栈元素的数据类型为整数。根据”相关问题
  • 第1题:

    POP(PUSH(S,A))的运算步骤是首先将元素A压入栈中,若栈S满,出现上溢现象,否则将元素A压入栈顶,且元素个数加1,然后做POP(S)运算,将栈顶元素弹出,且元素个数减一。( )

    此题为判断题(对,错)。


    正确答案: 正确

  • 第2题:

    假定栈用顺序的方式存储,栈类型stack定义如下:

    TYPE stack=RECORD

    A: ARRAY[1..M0OF datatype;

    t:0..M0;

    END;

    下面是栈的一种基本运算的实现:

    PROCEDURE xxxx(VAR s:stack)

    BEGIN

    IF s.t=0

    THEN print('underflow')

    ELSE s.t:=s.t-1;

    END;

    请问这是栈的哪种基本运算?( )。

    A) 栈的推入

    B) 栈的弹出

    C) 读栈顶元素

    D) 将栈置为空栈

    A.

    B.

    C.

    D.


    正确答案:B

  • 第3题:

    设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4,s5,s6,s1,则栈的容量至少应该是 ( )

    A.2

    B.3

    C.5

    D.6


    正确答案:B

  • 第4题:

    (12)假定栈用顺序的方式存储,栈类型 stack定义如下:

    TYPE stack=RECORD

    A:ARRAY[l..m0] OF datatype;

    t:O..m0;

    END;

    下面是栈的一种基本运算的实现:

    PROCEDURE xxxx(VAR s:satack);

    BEGIN

    IF s.t=0

    THEN print(‘underflow’)

    ELSE s.t:=s.t-1;

    END;

    请问这是栈的哪一种基本运算?

    A) 栈的推入

    B)栈的弹出

    C)读栈顶元素

    D)将栈置为空栈


    正确答案:A

  • 第5题:

    ●设push、pop分别表示入栈、出栈操作,若初始栈为空,对于元素序列a b c,

    则操作序列push、pop、pop、push、push、pop (36)。

    (36)

    A.得到出栈序列为abc

    B.得到出栈序列为bac

    C.得到出栈序列为bca

    D.是非法的操作序列


    正确答案:D

  • 第6题:

    以下不是栈的基本运算的是()。

    A.删除栈顶元素
    B.删除栈底元素
    C.判断栈是否为空
    D.将栈置为空栈

    答案:B
    解析:
    栈的基本运算有入栈、出栈(删除栈顶元素)、初始化、置空、判断栈是否为空或满、提取栈顶元素等,对栈的操作都是在栈顶进行的。

  • 第7题:

    设数组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

    正确答案:A

  • 第8题:

    以下哪一个不是栈的基本运算()

    • A、删除栈顶元素
    • B、删除栈底的元素
    • C、判断栈是否为空
    • D、将栈置为空栈

    正确答案:B

  • 第9题:

    在作退栈运算时应先判别栈是否()。

    • A、空
    • B、满
    • C、上溢
    • D、下溢

    正确答案:A

  • 第10题:

    若用数组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

    正确答案:A

  • 第11题:

    单选题
    以下哪一个不是栈的基本运算()
    A

    删除栈顶元素

    B

    删除栈底的元素

    C

    判断栈是否为空

    D

    将栈置为空栈


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

  • 第12题:

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

    栈满时作退栈运算

    B

    栈满时作进栈运算

    C

    栈空时作退栈运算

    D

    栈空时作进栈运算


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

  • 第13题:

    下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当的语句,完成栈类模板的定义。

    template<class t>

    class Tstack

    {

    enum{size=1000};

    T stack[size]

    int top;

    public:

    Tsack():top(0){}

    void push(const T&i){

    if(top<size)

    stack[top++]=i;

    }

    T pop()

    {

    if(top==O)exit(1);//栈空时终止运行

    retum【 】;

    }

    };


    正确答案:stack[--top]
    stack[--top] 解析:++/--运算符;注意栈顶元素在stack[top-1]中。

  • 第14题:

    若pllsh、pop分别表示入栈、出栈操作,初始栈为空且元素1、2、3依次进栈,则经过操作序列push、push、pop、pop、push、pop之后,得到的出栈序列为 ______。

    A.321

    B.213

    C.231

    D.123

    A.

    B.

    C.

    D.


    正确答案:B

  • 第15题:

    设有一个顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素的出栈顺序为s2,s3,s4,s6,s5,s1,则顺序栈的容量至少应为______。

    A.2

    B.3

    C.4

    D.5


    正确答案:B
    解析:栈的特点是先进后出。根据题中的进出栈顺序,在s6进栈后,栈中元素最多,除了栈项元素s6外,还有s1和s5。因此顺序栈的容量至少应为3。

  • 第16题:

    以下哪一个不是栈的基本运算( )。

    A)往栈中任意位置插入一个元素

    B)从栈中删除一个元素

    C)把栈的栈顶元素读到变量中

    D)将栈置为空栈


    正确答案:A

  • 第17题:

    若push、pop分别表示入栈、出栈操作,初始栈为空且元素1、2、3依次进栈,则经过操作序列push、push、pop、pop、push、pop之后,得到的出栈序列为 ( )

    A.321
    B.213
    C.231
    D.123

    答案:B
    解析:
    栈的运算特点为在同一端插入和删除元素,即先入后出,总是栈顶元素先出栈,新元素总是压在栈顶元素之上并成为栈顶元素。初始栈为空,如下图(a)所示。对于元素 1、2、3,依照操作序列push、push、pop、pop、push、pop,可以得到出栈序列213,其过程为:第一个push操作将元素1压入栈中,如下图(b)所示:第二个push操作将元素2压入栈中,如下图(c)所示:第一个pop将栈顶元素2弹出栈,新栈顶元素为1,如下图(d)所示;第二个pop将栈顶元素1弹出栈,导致栈空,如下图(e)所示:其后的push和pop分别将元素3压入和弹出栈,操作结果如下图(f)和(g)所示。

  • 第18题:

    以下哪一个不是栈的基本运算()。

    A.删除栈顶元素
    B.删除栈底元素
    C.判断栈是否为空
    D.将栈置为空栈

    答案:B
    解析:
    栈的基本运算有人栈、出栈(删除栈顶元素)、初始化、置空、判断是否为空或满、提取栈顶元素等,对栈元素的操作都是在栈顶进行的

  • 第19题:

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

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

    正确答案:D

  • 第20题:

    设有一个顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素的出栈顺序为s2,s3,s6,s5,s1则顺序栈的容量至少应为()。


    正确答案:3

  • 第21题:

    顺序栈的上溢是指()。

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

    正确答案:B

  • 第22题:

    设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下述问题: (1)若入、出栈次序为Push(1),Pop(),Push(2),Push(3),Pop(),Pop(),Push(4),Pop(),则出栈的数字序列为何?(这里Push(i)表示i进栈,Pop()表示出栈) (2)能否得到出栈序列1423和1432?并说明为什么不能得到或者如何得到。 (3)请分析1,2,3,4的24种排列中,哪些序列是可以通过相应的入出栈操作得到的。


    正确答案:(1)出栈序列为:1324
    (2)不能得到1423序列。因为要得到14的出栈序列,则应做
    Push(1),Pop(),Push(2),Push(3),Push(4),Pop()。这样,3在栈顶,2在栈底,所以不能得到23的出栈序列。能得到1432的出栈序列。具体操作为:Push(1),Pop(),Push(2),Push(3),Push(4),Pop(),Pop(),Pop()。
    (3)在1,2,3,4的24种排列中,可通过相应入出栈操作得到的序列是:1234,1243,1324,1342,1432,2134,2143,2314,2341,2431,3214,3241,3421,4321
    不能得到的序列是:
    1423,2413,3124,3142,3412,4123,4132,4213,4231,4312

  • 第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开始的。