集册 Java实例教程 创建自定义堆栈以保存整数

创建自定义堆栈以保存整数

欢马劈雪     最近更新时间:2020-01-02 10:19:05

573
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
创建自定义堆栈以保存整数

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() + " ");

        }

    }

}


展开阅读全文