Javaはスタックを実装します(カスタム配列を通じて、自動的に拡張できます)

Javaはスタックを実装します(自動的に拡張できます)


最初にインターフェースインターフェーススタックを宣言します<E>

/**
 * @author yinglongwu
 */
 //适用泛型
public interface Stack<E> {

	int getSize();
	boolean isEmpty();
	void push(E e);//入栈
	E pop();//出栈
	E peek();//查看栈顶元素
}

クラスArrayStack <E>はインターフェースを実装します

ここでは、カスタムArrayクラスのメソッドを使用してStackインターフェースを実装し、このArrayStackクラスを形成します。
カスタムArrayクラス:ジャンプするには私をクリックしてください

/**
 * @author yinglongwu
 */
//这里通过自定义的Array类里的方法实现Stack接口,进而形成这个ArrayStack,
//并且也可以自动扩容
public class ArrayStack<E> implements Stack<E> {

	//这个Array<E>是自己封装的,内容详见 https://blog.csdn.net/qq_43594119/article/details/105183123
	Array<E> array;
	
	//有参构造
	public ArrayStack(int capacity) {
		array = new Array<>(capacity);
	}
	//无参构造
	public ArrayStack() {
		array = new Array<>();//使用Array类里的无参构造
	}
	
	//获取栈的最大容量
	public int getCapacity() {
		return array.getCapacity();//调用的方法也是自己封装的Array类里的方法
	}
	
	//对接口中的方法进行重写
	@Override
	public int getSize() {
		return array.getSize();
	}

	@Override
	public boolean isEmpty() {
		return array.isEmpty();
	}

	//入栈
	@Override
	public void push(E e) {
		array.addLast(e);
	}

	//出栈
	@Override
	public E pop() {
		return array.removeLast();
	}

	//查看栈顶元素
	@Override
	public E peek() {
		return array.getLast();
	}
	
	//对toString方法进行重写,方便输出栈的基本信息
	@Override
	public String toString() {
		StringBuilder res = new StringBuilder();
		res.append("Stack: ");
		res.append('[');
		for (int i = 0; i < array.getSize(); i++) {
			res.append(array.get(i));
			if (i != array.getSize()-1) {
				res.append(", ");
			}
		}
		res.append("] top");//表明右侧是栈顶
		return res.toString();
	}
}

このArrayStackスタックを使用してテストする

/**
 * @author yinglongwu
 */
public class Main {

	public static void main(String[] args) {
		
		//测试class ArrayStack
		ArrayStack<Integer> stack = new ArrayStack<Integer>();//new ArrayStack<Integer>()里的Integer可写可不写
		
		//包装类和其对应的基本数据类型可以自动转换
		//将0到4入栈
		for (int i = 0; i < 5; i++) {
			stack.push(i);
			System.out.println(stack);
		}
		
		//出一次栈
		stack.pop();
		System.out.println(stack);
	}
	
}

出力結果
ここに画像の説明を挿入

318の元の記事を公開 44のような 訪問者20,000以上

おすすめ

転載: blog.csdn.net/qq_43594119/article/details/105184113