若对一个初始为空的顺序栈(最大容量为5)进行如下操作序列:push(a), push(b), push(c), pop(), push(d), push(e), push(f), pop(), pop()。那么,下列关于该顺序栈的描述中,正确的是:(假设栈顶指针指向栈顶元素的下一个位置)

答案解析

核心考点:顺序栈的入栈、出栈操作,栈顶指针的理解。解题思路分析:模拟栈的操作,并注意栈顶指针的含义,栈顶指针指向栈顶元素的下一个位置。详细分析:1. push(a): 栈 [a],栈顶指针指向[a]的下一个位置;2. push(b): 栈 [a, b],栈顶指针指向[b]的下一个位置;3. push(c): 栈 [a, b, c],栈顶指针指向[c]的下一个位置;4. pop(): 栈 [a, b],栈顶指针指向[b]的下一个位置;5. push(d): 栈 [a, b, d],栈顶指针指向[d]的下一个位置;6. push(e): 栈 [a, b, d, e],栈顶指针指向[e]的下一个位置;7. push(f): 由于栈容量为5,所以push(f)会导致溢出,此时必须进行扩容操作,若假设扩容成功,则栈 [a, b, d, e, f],栈顶指针指向[f]的下一个位置;8. pop(): 栈 [a, b, d, e],栈顶指针指向[e]的下一个位置;9. pop(): 栈 [a, b, d],栈顶指针指向[d]的下一个位置。此时栈内元素为 a, b, d, 由于在题目中描述,当顺序栈容量满了时会进行扩容操作,而并没有说明扩容的大小,因此,在此扩容的前提下,栈顶指针指向栈中最后一个元素的下一个位置。A选项:错误,元素为a,b,d, 栈顶指针位置错误。B选项:错误,元素为a,b,d, 栈顶指针位置错误。C选项:错误,元素为a,b,d。D选项:正确。易错点提醒:栈顶指针指向栈顶元素的下一个位置,而不是当前栈顶元素的位置。正确答案的关键依据:模拟栈操作过程,注意栈顶指针指向下一个空位,以及扩容操作。每个选项分析:A选项错误,栈中还有b元素,栈顶指针的位置有误。B选项错误,栈中还有b元素,栈顶指针的位置有误。C选项错误,栈中的元素为a,b,d。D选项正确。所以应选D。
正确答案:D
随机推荐
开始刷题