设计栈类,用java实现

一.介绍

栈是一种以后进先出的方式存放数据的数据结构
设计一个测试类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());
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42768634/article/details/113768545
今日推荐