java实现的顺序栈

顺序栈

package 栈;
/*
 * 栈就是特殊的线性表。
 */
public interface Stack<E> {
	public int getSize();
	public boolean isEmpty();
	public void push(E e);//进栈
	public E pop();//弹栈
	public E peek();//出栈
	public void clear();
}

package 栈;

import 栈.Stack;
import 顺序表.ArrayList;;

/*
 * 顺序栈和顺序表很像,当顺序表对表尾进行操作的时候,就叫顺序栈,
 * 对一端进行操作,可以用顺序表进行拓展。
 * 栈是先进后出。
 * 顺序栈栈也是一种特殊的线性表,是有限的序列。
 */
public class ArrayStack<E> implements Stack<E> {
	private ArrayList<E> list;

	public ArrayStack() {
		this(10);
	}

	public ArrayStack(int capacity) {
		list = new ArrayList<>(capacity);
	}

	@Override

	public int getSize() {
		// TODO Auto-generated method stub
		return list.getSize();
	}

	@Override
	public boolean isEmpty() {
		// TODO Auto-generated method stub
		return list.isEmpty();
	}

	@Override
	public void push(E e) {
		// TODO Auto-generated method stub
		list.addLast(e);
	}

	@Override
	public E pop() {
		// TODO Auto-generated method stub
		return list.removeLast();
	}

	@Override
	public E peek() {// 查询栈顶元素
		// TODO Auto-generated method stub
		return list.getLast();
	}

	@Override
	public void clear() {
		// TODO Auto-generated method stub
		list.clear();
	}

	// 定义成员函数
	public int getCapacity() {
		return list.getCapacity();

	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		StringBuilder str = new StringBuilder();
		if (isEmpty()) {
			str.append(String.format("顺序栈:bottom[]top***%d/%d\n", list.getSize(), list.getCapacity()));
		} else {
			str.append("顺序栈:bottom[");
			for (int i = 0; i < list.getSize(); i++) {
				if (i != list.getSize() - 1) {
					str.append(list.get(i) + ",");
				} else {
					str.append(list.get(i) + "]top");
				}
			}
			str.append(String.format("***%d/%d\n", list.getSize(), list.getCapacity()));
		}
		return str.toString();
	}

}

三 测试

package 栈;

public class TestArrayStack {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayStack<Integer> sta=new ArrayStack<Integer>();
		System.out.println(sta);
		sta.push(286);
		sta.push(285);
		sta.push(386);
		sta.push(276);
		sta.push(2246);
		sta.push(286);
		sta.push(285);
		sta.push(386);
		sta.push(276);
		sta.push(2246);
		sta.push(45485);
		System.out.println(sta);
		System.out.println(sta.pop());
		System.out.println(sta);
		System.out.println(sta.isEmpty());
		System.out.println(sta.peek());
		sta.clear();
		System.out.println(sta);
	}
}

四:测试结果

顺序栈:bottom[]top***0/10

顺序栈:bottom[286,285,386,276,2246,286,285,386,276,2246,45485]top***11/20

45485
顺序栈:bottom[286,285,386,276,2246,286,285,386,276,2246]top***10/20

false
2246
顺序栈:bottom[]top***0/10

猜你喜欢

转载自blog.csdn.net/qq_42405666/article/details/88802971