阅读以下说明和C++代码,将应填入______处的字句写在对应栏内。
[说明]
已知类LinkedList表示列表类,该类具有4个方法:addElement()、lastElement()、numberOfElement()以及removeLastElement()。4个方法的含义分别如下。
· void addElement(Obect):在列表尾部添加一个对象。
· Object lastElement():返回列表尾部对象。
· int numberOfElement():返回列表中对象的个数。
· void removeLastElement():删除列表尾部的对象。
现需要借助LinkedList来实现一个Stack栈类,C++代码1和C++代码2分别采用继承和组合的方式来实现。
[C++代码1]
Class Stack:public LinkedList
public:void push(Object o)(addElement(o);; //压栈
Object peek()return ______;; //获取栈顶元素
bool isEmpty() //判断栈是否为空
return numberOfElement()==0;;
Object pop //弹栈
Object o=lastElement();
______;
Return 0;
;
;
[C++代码2]
class stack
private:
______;
public:
void push(Object o) //压栈
list.addElement(o);
;
object peek //获取栈顶元素
return list ______;
;
bool isEmpty() //判断栈是否为空
retum list.numberOfElement()==0
;
Object pop() //弹栈
Objecto=list.lastElement();
list.removeLastElement();
return o;
;
[问题]若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)______(A.继承B.组合)
参考答案:A
解析: 栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来),所以获取栈项元素只需读出最后一个元素即可,因此第一空、第四空均应为lastElement()。栈是允许在同一端进行插入和删除操作的特殊线性表,允许进行插入和删除操作的一端称为栈顶(top),另一端称为栈底(bottom),插入一般称为压栈(PUSH),删除则称为弹栈(POP)。所以第二空进行弹栈操作时应删除最后一个元素,因此第二空应为removeLastElement()。代码2中list没有声明,所以第三空应为LinkedList list。对象可以直接访问的方法应该是本类中的所有方法或其父类的非私有方法,所以若类LinkedList新增加了一个公有的方法removeElement (int index),则Stack对象可以通过代码1中的继承方式来访问该方法。