定义IntegerStack
接口,用于声明一个存放Integer元素的栈的常见方法:
public Integer push(Integer item);
//如果item为null,则不入栈直接返回null。如果栈满,也返回null。如果插入成功,返回item。
public Integer pop(); //出栈,如果为空,则返回null。出栈时只移动栈顶指针,相应位置不置为null
public Integer peek(); //获得栈顶元素,如果为空,则返回null.
public boolean empty(); //如果为空返回true
public int size(); //返回栈中元素个数
定义IntegerStack的实现类ArrayIntegerStack
,内部使用数组实现。创建时,可指定内部数组大小。
main方法说明
- 输入n,建立可包含n个元素的ArrayIntegerStack对象
- 输入m个值,均入栈。每次入栈均打印入栈返回结果。
- 输出栈顶元素,输出是否为空,输出size
- 使用Arrays.toString()输出内部数组中的值。
- 输入x,然后出栈x次,每次出栈均打印。
- 输出栈顶元素,输出是否为空,输出size
- 使用Arrays.toString()输出内部数组中的值。
思考
如果IntegerStack接口的实现类内部使用ArrayList来存储元素,怎么实现?测试代码需要进行什么修改?
输入样例
5
3
1 2 3
2
输出样例
1
2
3
3,false,3
[1, 2, 3, null, null]
3
2
1,false,1
[1, 2, 3, null, null]
代码示例
import java.util.*;
interface IntegerStack{
public Integer push(Integer item);
//如果item为null,则不入栈直接返回null。如果栈满,也返回null。如果插入成功,返回item。
public Integer pop(); //出栈,如果为空,则返回null。出栈时只移动栈顶指针,相应位置不置为null
public Integer peek(); //获得栈顶元素,如果为空,则返回null.
public boolean empty(); //如果为空返回true
public int size(); //返回栈中元素个数
}
class ArrayIntegerStack{
public Integer [] array;
private int len;
public ArrayIntegerStack(int n) {
this.array = new Integer[n];
len=0;
}
public Integer push(Integer item) {
if(item==null) {
return null;
}
if(len==this.array.length) {
return null;
}
array[len++]=item;
return item;
}
public Integer pop() {
if(len==0) {
return null;
}
len--;
return array[len];
}
public Integer peek() {
if(len==0) {
return null;
}
return array[len-1];
}
public boolean empty() {
if(len==0) {
return true;
}
else {
return false;
}
}
public int size() {
return len;
}
}
public class Main{
public static void main(String [] args){
Scanner in=new Scanner(System.in);
int n = in.nextInt();
ArrayIntegerStack stack = new ArrayIntegerStack(n);
int m = in.nextInt();
for(int i=0;i<m;i++) {
int temp = in.nextInt();
System.out.println(stack.push(temp));
}
System.out.println(stack.peek()+","+stack.empty()+","+stack.size());
System.out.println(Arrays.toString(stack.array));
int x = in.nextInt();
for(int j = 0;j<x;j++) {
System.out.println(stack.pop());
}
System.out.println(stack.peek()+","+stack.empty()+","+stack.size());
System.out.println(Arrays.toString(stack.array));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/103146.html