用 java(利用继承实现MyStack)在程序清单11-10中,MyStack是用组合实现的。扩展ArrayList创建一个新的栈类。实现MyStack类。编写一个测试程序,提示用户输入5个字符串,然后以逆序显示这些字符串。
时间: 2024-02-16 18:03:53 浏览: 73
好的,我来帮你解答这个问题。
首先,我们需要定义栈类 MyStack,利用 ArrayList 实现栈的基本操作。代码如下:
```java
import java.util.ArrayList;
public class MyStack<E> {
private ArrayList<E> list = new ArrayList<E>();
public int getSize() {
return list.size();
}
public E peek() {
return list.get(getSize() - 1);
}
public void push(E o) {
list.add(o);
}
public E pop() {
E o = list.get(getSize() - 1);
list.remove(getSize() - 1);
return o;
}
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public String toString() {
return "stack: " + list.toString();
}
}
```
接下来,我们需要扩展 ArrayList 创建一个新的栈类,实现 MyStack 类。代码如下:
```java
public class NewStack<E> extends ArrayList<E> {
public int getSize() {
return size();
}
public E peek() {
return get(getSize() - 1);
}
public void push(E o) {
add(o);
}
public E pop() {
E o = get(getSize() - 1);
remove(getSize() - 1);
return o;
}
public boolean isEmpty() {
return super.isEmpty();
}
@Override
public String toString() {
return "stack: " + super.toString();
}
}
```
最后,我们需要编写一个测试程序,提示用户输入 5 个字符串,然后以逆序显示这些字符串。代码如下:
```java
import java.util.Scanner;
public class TestNewStack {
public static void main(String[] args) {
NewStack<String> stack = new NewStack<>();
Scanner input = new Scanner(System.in);
System.out.print("Enter 5 strings: ");
for (int i = 0; i < 5; i++) {
stack.push(input.next());
}
System.out.print("Reversed order: ");
while (!stack.isEmpty()) {
System.out.print(stack.pop() + " ");
}
System.out.println();
}
}
```
这个程序会提示用户输入 5 个字符串,然后将这些字符串以逆序显示出来。
希望我的回答能够帮助到你!
阅读全文