7-2 jmu-Java-04面向对象进阶-03-接口-自定义接口ArrayIntegerStack (10 分)

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方法说明

  1. 输入n,建立可包含n个元素的ArrayIntegerStack对象
  2. 输入m个值,均入栈。每次入栈均打印入栈返回结果。
  3. 输出栈顶元素,输出是否为空,输出size
  4. 使用Arrays.toString()输出内部数组中的值。
  5. 输入x,然后出栈x次,每次出栈均打印。
  6. 输出栈顶元素,输出是否为空,输出size
  7. 使用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);
	public Integer pop(); 
	public Integer peek();
	public boolean empty();
	public int size();
}

class ArrayIntegerStack implements IntegerStack{
	Integer A[];
	int Max,Size = 0;
	public ArrayIntegerStack(int n) {
		A = new Integer[n];
		Max = n;
	}
	public Integer push(Integer item) {
		if(item == null)
			return null;
		else if(Size == Max)
			return null;
		else {
			A[Size] = item;
			Size++;
			return item;
		}			
	}
	
	public Integer pop() {
		if(Size == 0)
			return null;
		Size--;
		return A[Size];
	}
	
	public Integer peek() {
		if(Size == 0)
			return null;
		else
			return A[Size - 1];
	}
	
	public boolean empty() {
		if(Size == 0)
			return true;
		else
			return false;
	}
	
	public int size() {
		return Size;
	}
	
	public String toString() {
		return Arrays.toString(A);
	}
	
}
public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		ArrayIntegerStack A = new ArrayIntegerStack(n);
		int m = in.nextInt();
		for(int i = 0;i < m;i++) {
			System.out.println(A.push(in.nextInt()));
		}
		
		System.out.println(A.peek() + "," + A.empty() + "," + A.size());
        System.out.println(A.toString());
        
        int x = in.nextInt();
        for(int i = 0;i < x;i++) {
        	System.out.println(A.pop());
        }
        
		System.out.println(A.peek() + "," + A.empty() + "," + A.size());
		System.out.println(A.toString());
		in.close();
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值