有一个初始为空的栈和下面的输入序列A,B,C,D,E,F;现经过如下操作:push, push, push, top, pop, top, pop, push, push, top, pop, pop, pop, push。
下列哪一个是正确的从栈中删除元素的序列?()
A.CBE
B.EBD
C.BEDCA
D.CBEDA
参考答案:D
解析:
栈是限定仅在表的一端进行插入和删除运算的线性表。如果这一端称为栈顶(top),则另一端称为栈底(bottom)。表中无元素时称为空栈。若栈中有元素a1,a2,…,an,如图所示,则称a1是栈底元素,an是栈顶元素。新元素进栈要置于an之上,删除或退栈必须先对an进行。这就形成了“后进先出”(LIFO)的操作原则。
栈的基本运算有以下五种:
①push(S, x)往栈S中插入(或称推入)一个值为x的元素。
②pop(S)从栈S中删除(或称弹出)一个元素。
③top(S, x)把栈S的栈顶元素读到变量x中,栈保持不变。
④emptyr(s)判断栈S是否为空栈,若是,则返回值为真。
⑤makempty(S)将栈S置为空栈。