提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
创建自定义堆栈以保存整数
public class StackOfInts { private int[] stack; //index of last item in the stack + 1//来自 时 代 J a v a 公 众 号 - N o w J a v a . c o m private int next = 0; public StackOfInts(int size) { //create an array large enough to hold the stack stack = new int[size]; } public void push(int on) { //push an integer onto the stack if (next < stack.length) { stack[next++] = on; } } //来 自 N o w J a v a . c o m public boolean isEmpty() { //check if the stack is empty return (next == 0); } public int pop() { //pop an integer from the stack if (!isEmpty()) { // next item in the stack return stack[--next]; } else { return 0; } } public int getStackSize() { //get the size of the stack return next; } //class that steps through the stack //not related to the stack functionality. private class StepThrough { // start stepping through the stack at i=0 with step 2 private int i = 0; // retrieve the current element public int getNext() { //get a next value in the stack int retValue = stack[i]; if (i < stack.length) { i = i + 2; } return retValue; } //last element in the stack? public boolean hasNext() { return (i < getStackSize()); } } //utility method for creating a new StepThrough class instance public StepThrough stepThrough() { return new StepThrough(); } public static void main(String[] args) { //instantiate the outer class as "stackOne" StackOfInts stackOne = new StackOfInts(15); //populate the stackOne System.out.print("Pushing elements into the stack: "); for (int j = 0; j < 15; j++) { System.out.print("" + j + " "); stackOne.push(j); } System.out.println(); System.out .println("Iterating through the whole stack selecting only even indexes:"); //instantiate the inner class as "iterator" StepThrough iterator = stackOne.stepThrough(); //print out the stackOne[i] while (iterator.hasNext()) { System.out.print(iterator.getNext() + " "); } System.out.println(); System.out.println("Popping all elements from the stack:"); for (int j = 0; j < 15; j++) { System.out.print(stackOne.pop() + " "); } } }