一.介绍
栈是一种以后进先出的方式存放数据的数据结构
设计一个测试类TestStackOfInteger,它使用该类创建一个栈,其中存储了0,1,2,…,9这10个整数,然后按逆序显示它们。
设计一个实现类StackOfInteger,栈中的元素存储在一个名为elements的数组中。创建一个栈的时候,同时也创建了这个数组。类的无参构造方法创建一个默认容量为16的数组,变量size记录了栈中元素的个数。为了实现方法push(int value),如果size<capaciry,则将value赋值给elements[size]。如果找已满(即size>=capacity),则创建一个容量为当前容量两倍的新数组,将当前数组的内容复制到新数组中,并将新数组的引用陚值给找中当前数组。
二.实现类
package com.zhuo.base;
public class StackOfInteger {
private int[] elements;
private int size;
public static final int DEFAULT_CAPACITY = 16;
public StackOfInteger() {
this (DEFAULT_CAPACITY);
}
public StackOfInteger(int capacity) {
elements = new int[capacity];
}
public void push(int value) {
if (size >= elements.length) {
int[] temp = new int[elements.length * 2];
System.arraycopy(elements, 0, temp, 0, elements.length);
elements = temp;
}
elements[size++] = value;
}
public int pop() {
return elements[--size];
}
public int peek() {
return elements[size - 1];
}
public int getSize() {
return size;
}
public boolean empty() {
return size == 0;
}
}
三.测试类
package com.zhuo.base;
public class TestStackOfInteger {
public static void main(String[] args) {
StackOfInteger stack = new StackOfInteger();
/*入栈操作*/
for (int i = 0; i < 10; i++) {
stack.push(i);
}
System.out.println("当前栈的元素个数: " + stack.getSize());
System.out.println("当前栈顶元素: " + stack.peek());//返回栈顶元素,而不删除栈顶元素
/*删除栈顶元素并返回它*/
System.out.print("取栈的所有元素: ");
while (!stack.empty()) {
System.out.print(stack.pop() + " ");
}
System.out.println();
System.out.println("当前的栈的元素个数: " + stack.getSize());
}
}