itgle.com

下面是一个栈类的模板,其中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)ex

题目

下面是一个栈类的模板,其中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【 】;

}

};


相似考题
更多“下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0, ”相关问题
  • 第1题:

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

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


    正确答案: 正确

  • 第2题:

    基于以下描述:有一个初始为空的栈和下面的输入序列A,B,c,D,E,F;现经过如下操作:push,push,push,top,pop,top,pop,push,pus,top,pop,pop,pop,push。

    下列哪一个是正确的从栈中删除元素的序列?

    A.CBE

    B.EBD

    C.BEDCA

    D.CBEDA


    正确答案:D
    解析:push、top和pop都是栈的基本操作。其中push是往栈中插入一个元素,top是求栈顶元素的值,pop是从栈中删除一个元素。当初始栈为空,输入序列为A、B、c、D、E、F时,经过题中的每一步操作时,栈中元素依次为:A,AB,ABC,AB(删除c),A(删除B),AD,ADE,AD(删除E),A(删除D),空(删除A),F。所以,从栈中删除的元素序列为CBEDA。

  • 第3题:

    若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)所示。

  • 第4题:

    阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

    [说明]

    用链式存储结构实现的栈称为链栈。若链栈元素的数据类型为datatype,以LinkStack记链栈结构,其类型定义为:

    typedef struct node

    { datatype data;

    stmct node * next;

    } StackNode, * LinkStack;

    由于栈的主要操作都是在栈顶进行的,因此我们把链表的头部作为栈顶。设top为栈顶指针,即:LinkStack top。

    下面各函数的功能说明如下:

    (1)LinkStack Init_LinkStack():建立并返回空的链栈;

    (2)int Empty_LinkStack(LinkStack top):判断top所指链栈是否空;

    (3)LinkStack Push_LinkStack(LinkStacktop,datatypex):将数据x压人top所指链栈的栈顶,返回新栈指针;

    (4)LinkStack Pop_LinkStack (LinkStacktop, datatype*x):弹出top所指链栈的栈顶元素x,返回新栈指针。

    [函数]

    LinkStaek Init_LinkStack( )

    { returnNULL;

    int Empty_LinkStack ( LinkStaek top)

    if(top = = NULL) return 1;

    else return 0;

    LinkStaek Push_LinkStaek( LinkStaektop, datatype X)

    { StaekNode *s;

    s=malloc (sizeof(StaekNode) );

    (1)= x;

    (2)= top;

    (3);

    return top;

    }

    LinkStaek Pop_LinkStack (LinkStacktop, datatype * x)

    { StaekNode *p;

    if(top = = NULL) return NULL;

    else{

    * x =(4);

    p = top;

    (5);

    free (p);

    return top;

    }

    }


    正确答案:(1)s->data (2)s->next (3)top=s (4)top->data (5)top=top->next
    (1)s->data (2)s->next (3)top=s (4)top->data (5)top=top->next 解析:(1)~(3):LinkStack Push_LinkStack(Link- Stacktop,datmype x)函数的功能是将x压入栈顶,因此首先为其创建一个节点s,使s->data等于x,使s-> next指向原来的栈顶top,最后将,作为新栈的栈顶并返回。
    (4)~(5):LinkStack Pop_LinkStaek(LinkStacktop, datatype*x)的功能是弹出原栈顶元素,返回这个元素以及新栈的指针。当原链栈不空时,取出栈顶元素top ->data赋给参量*x作为返回值,将top->next更新为新栈的栈顶,并且释放原来top节点的空间。

  • 第5题:

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

    A.321

    B.213

    C.231

    D.123


    正确答案:C
    经过前两个操作push、push之后,栈里有元素3、2且2在栈顶。接着再进行pop、pop之后,依次把2、3出栈了,栈空了。再接着push、pop,元素1进栈又出栈。因此,最终得到的出栈顺序是231。