PTA (ArrayListIntegerStack)

it2025-03-31  10

jmu-Java-05集合-01-ArrayListIntegerStack

定义IntegerStack接口,该接口描述了一个存放Integer的栈的常见方法:

public Integer push(Integer item); //如item为null,则不入栈直接返回null。否则直接入栈,然后返回item。 public Integer pop(); //出栈,如栈为空,则返回null。 public Integer peek(); //获得栈顶元素,如栈顶为空,则返回null。注意:不要出栈 public boolean empty(); //如过栈为空返回true public int size(); //返回栈中元素数量 定义IntegerStack的实现类ArrayListIntegerStack,内部使用ArrayList存储。该类中包含:

构造函数: 在无参构造函数中新建ArrayList或者LinkedList,作为栈的内部存储。 思考:查询JDK文档,尝试说明本题到底使用哪个List实现类最好。

方法: public String toString() //用于输出List中的内容,可直接调用List的toString()方法。可用System.out.println(list)进行输出。

提示:

不建议使用top指针。最好直接复用List实现类中已有的方法。 pop时应将相应的元素从列表中移除。 main方法说明 建立ArrayIntegerStack对象 输入m个值,均入栈。每次入栈均打印入栈返回结果。 输出: 栈顶元素,输出是否为空,然后输出size. 输出栈中所有元素(调用其toString()方法) 输入x,然后出栈x次,每次均打印出栈的对象。 输出:栈顶元素,输出是否为空,输出size。注意:这里的输出栈顶元素,仅输出、不出栈。 输出栈中所有元素(调用其toString()方法)。注意:返回null,也要输出。 思考: 如果使用LinkedList来实现IntegerStack,怎么实现?测试代码需要进行什么修改?

输入样例 5 1 3 5 7 -1 2

输出样例 1 3 5 7 -1 -1,false,5 [1, 3, 5, 7, -1] -1 7 5,false,3 [1, 3, 5]

ArrayList模拟一个堆栈,直接模拟就可以了。

import java.util.ArrayList; import java.util.Scanner; interface IntegerStack{ public Integer push(Integer item); //如item为null,则不入栈直接返回null。否则直接入栈,然后返回item。 public Integer pop(); //出栈,如栈为空,则返回null。 public Integer peek(); //获得栈顶元素,如栈顶为空,则返回null。注意:不要出栈 public boolean empty(); //如过栈为空返回true public int size(); //返回栈中元素数量 } class ArrayListIntegerStack implements IntegerStack{ ArrayList<Integer> a; ArrayListIntegerStack(){ a = new ArrayList<Integer>(); } @Override public Integer push(Integer item) { if(item != null){ a.add(item); return item; } return null; } @Override public Integer pop() { if(a.isEmpty() ){ return null; } Integer s = a.get(size()-1); a.remove(a.size()-1); return s; } @Override public Integer peek() { if(empty()){ return null; } return a.get(a.size()-1); } @Override public boolean empty() { return a.isEmpty(); } @Override public int size() { return a.size(); } @Override public String toString() { return a.toString(); } } public class Main { public static void main(String[] args) { ArrayListIntegerStack t = new ArrayListIntegerStack(); Scanner cin = new Scanner(System.in); int n = cin.nextInt(); for(int i = 0;i < n;i++){ int x = cin.nextInt(); t.push(x); System.out.println(x); } System.out.println(t.peek()+","+t.empty()+","+t.size()); System.out.println(t.toString()); int m = cin.nextInt(); for(int i = 0;i < m;i++){ System.out.println(t.pop()); } System.out.println(t.peek()+","+t.empty()+","+t.size()); System.out.println(t.toString()); } }
最新回复(0)