有固定ip自己做网站,门户网站建设自查整改,余姚网络公司哪家好,网页编辑快捷键1. 前言
前文我们刚提及了如何用单向链表来模拟栈. 我们还可以用数组来模拟栈.使用栈顶指针top来进行栈顶的操作.
2. 数组模拟栈
(1). 栈接口
public interface stackE {//压栈boolean push(E value);//弹栈, 栈非空返回栈顶元素E pop();//返回栈顶元素, 但不弹栈E…1. 前言
前文我们刚提及了如何用单向链表来模拟栈. 我们还可以用数组来模拟栈.使用栈顶指针top来进行栈顶的操作.
2. 数组模拟栈
(1). 栈接口
public interface stackE {//压栈boolean push(E value);//弹栈, 栈非空返回栈顶元素E pop();//返回栈顶元素, 但不弹栈E peek();//判断栈是否为空boolean isEmpty();//判断栈是否已满boolean isFull();
}(2). 数组模拟栈
public class ArrayStackE implements stackE, IterableE{//栈顶指针private int top;//数组模拟栈private E[] stack;public ArrayStack(int capacity) {stack (E[]) new Object[capacity];}Overridepublic boolean push(E value) {if(isFull()) {return false;}stack[top] value;return true;}Overridepublic E pop() {if(isEmpty()) {return null;}return stack[--top];}Overridepublic E peek() {if (isEmpty()) {return null;}return stack[top-1];}Overridepublic boolean isEmpty() {return top 0;}Overridepublic boolean isFull() {return top stack.length;}Overridepublic IteratorE iterator() {return new IteratorE() {Overridepublic boolean hasNext() {return top 0;}Overridepublic E next() {return stack[--top];}};}
}3. 单元测试
public class ArrayStackTest {Testpublic void test1() {ArrayStackInteger stack new ArrayStack(10);stack.push(1);stack.push(2);stack.push(3);stack.push(4);stack.push(5);stack.push(6);stack.push(7);for (Integer element : stack) {System.out.print(element );}//7 6 5 4 3 2 1}Testpublic void test2() {ArrayStackInteger stack new ArrayStack(10);stack.push(1);stack.push(2);stack.push(3);stack.push(4);stack.push(5);stack.push(6);stack.push(7);System.out.println(stack.peek());//7System.out.println(stack.pop());//7System.out.println(stack.peek());//6}
}