栈的数组实现方式:
定义一个“栈类”,用数组来实现栈的具体操作过程。
public class MyStack {
//栈的实现过程
int[] elements;
//构造函数 初始化一个栈
public MyStack() {
elements = new int[1];
}
//向栈顶压入元素
public void push(int elem) {
int[] newArr = new int[elements.length + 1];
for(int i = 0; i < elements.length; i++) {
newArr[i] = elements[i];
}
//将新添加的元素放在创建数组的元素末尾
newArr[elements.length] = elem;
elements = newArr;
}
//将栈顶元素弹出
public int pop() {
if(elements.length == 0) {
throw new RuntimeException("stack is empty");
}
int element = elements[elements.length - 1];
int[] newArr = new int[elements.length - 1];
for(int i = 0; i < elements.length - 1; i++) {
newArr[i] = elements[i];
}
elements = newArr;
//返回取出的元素
return element;
}
//查看栈顶元素
public int peek() {
return elements[elements.length - 1];
}
//判断栈空
public boolean isEmpty() {
return elements.length == 0 ;
}
}
测试程序,用来测试栈的基本操作。
public class TestMyStack {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyStack ms = new MyStack();
//测试出栈异常
// ms.pop();
//向栈中压入元素
ms.push(9);
ms.push(8);
ms.push(7);
ms.push(6);
ms.push(5);
ms.push(4);
ms.push(3);
ms.push(2);
ms.push(1);
ms.push(0);
//返回栈顶元素
System.out.println(ms.peek());
//栈中元素退栈
System.out.println(ms.pop());
System.out.println(ms.pop());
System.out.println(ms.pop());
System.out.println(ms.pop());
//判断栈空
System.out.println(ms.isEmpty());
}
}
总结:在JAVA和C++语言中,已经对栈的操作进行了封装,在编程的过程中可以直接用,但是作为程序员,应该知道其具体的实现细节。