问答题
阅读以下说明和Java代码,将应填入{{U}} (n) {{/U}}处的字句写在答题纸的对应栏内。
{{B}}[{{/B}}说明{{B}}]{{/B}}
已知类LinkedList表示列表类,该类具有四个方法:addElement()、lastElement()、 HumberOfElement()以及removeLastElement()。四个方法的含义分别为:
void addElement(Object):在列表尾部添加一个对象;
Object lastElement():返回列表尾部对象;
int numberOfElement():返回列表中对象个数;
void removeLastElement():删除列表尾部的对象。
现需要借助LinkeedList来实现一个Stack栈类,Java代码1和Java代码2分别采用继承和组合的方式实现。
{{B}}[{{/B}}Java代码1{{B}}]{{/B}}
public class Stack extends binkedList {
public void push(Object o) { //压栈
addElement (o);
}
public Object peek() { //获取栈顶元素
return{{U}} (1) {{/U}};
}
public boolean isEmpty() { //判断栈是否为空
return numberOfElement () ==0;
}
public Object pop() { //弹栈
Object o=lastElement();
{{U}} (2) {{/U}};
return o;
}
{{B}}[{{/B}}Java代码2{{B}}]{{/B}}
public class Stack {
private{{U}} ( 3 ) {{/U}};
public Stack() {
list = new LinkedList ();
}
public void push (Object o) {
list. addElement (o);
}
public Object peek() { //获取栈顶元素
return list.{{U}} (4) {{/U}};
}
public boolean isEmpty () { //判断栈是否为空
return list.numberOfElement()==0;
}
public Object pop(){ //弹栈
Object o =list.lastElement();
list.removeLastElement();
return o;
}
{{B}}[{{/B}}问题{{B}}]{{/B}}
若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第 index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)?{{U}} (5) {{/U}}(A.继承 B.组合)
【正确答案】
【答案解析】(1)lastElement() (2) removeLastElement() (3) LinkedListlist (4) lastElement() (5) A
[解析] 根据代码注释,程序代码中空(1)处用来获取栈顶元素,而父类LinkedList提供的成员函数lastElement()可以实现此功能,因此此处调用该函数即可,所以空(1)处填写lastElement()。空(2)处主要执行“弹栈”操作,根据Objectpop()函数的要求,元素弹出栈主要有两个步骤,一是获取栈顶元素,即返回队列尾部对象;二是删除栈顶元素,即删除队列尾部的对象,调用removeLastElement()函数即可实现,所以空 (2)处应该填“removeLastElement()”。空(3)处要求定义一个对象,再根据后面程序代码的提示,可以知道该对象名字为list,类型为 LinkedList,所以空(3)处应填“LinkedList list”。空(4)处用于获取栈顶元素,即返回队列尾部的对象,类LinkedList的lastElement()函数即可实现该功能,所以空(4)处应填“lastElement()”。类的继承是指子类的对象拥有对父类的成员和属性进行访问的权限,通过继承可以使用父类提供的removeElement()方法,类的组合描述的是一个类内嵌其他类的对象作为成员的情况,描述的是一种包含和被包含的关系,所以通过组合Stack对象并不能访问LinkedList提供的方法removeElement(int index),所以空(5)应填A。