zoukankan      html  css  js  c++  java
  • 二、栈与队列

    栈的构造:

    import java.util.Arrays;
    /**
     * @author zhou
     * @date 2021-5-7 8:12
     */
    public class MyStack {
        private int[] elements;
        public MyStack(){
            elements = new int[0];
        }
    
        public void show(){ // 打印 栈
            System.out.println(Arrays.toString(elements));
        }
    
        public void push(int element) { // 入栈
            int[] newArr = new int[elements.length + 1];
            for (int i = 0; i < elements.length; i++) {
                newArr[i] = elements[i];
            }
            newArr[elements.length] = element;
            elements = newArr;
        }
    
        public int pop(){ // 出栈
            if (elements.length == 0) {
                throw new ArrayIndexOutOfBoundsException("Stack is empty");
            }
            // 取出数组最后一个元素
            int element=elements[elements.length - 1];
            int[] newArr = new int[elements.length - 1];
            for (int i = 0; i < newArr.length; i++) {
                newArr[i] = elements[i];
            }
            elements = newArr;
            return element;
        }
    
        public int peek(){ // 显示栈的顶端元素
            if (elements.length == 0) {
                throw new ArrayIndexOutOfBoundsException("Stack is empty");
            }
            return elements[elements.length - 1];
        }
    
        public boolean isEmpty(){ // 判断栈是否为空
            return elements.length == 0;
        }
    
    }
    
    

    栈的测试类:

    /**
     * @author zhou
     * @date 2021-5-7
     * 测试类  测试MyStack 栈
     */
    
    public class TestMyStack {
        public static void main(String[] args) {
            MyStack ms = new MyStack();
            ms.push(11);
            ms.push(22);
            ms.push(33);
            ms.push(16);
            ms.show();
            int pop = ms.pop();
            System.out.println(pop);
            ms.show();
            System.out.println(ms.isEmpty());
            System.out.println(ms.peek());
    
        }
    }
    

    运行结果:

    [11, 22, 33, 16]
    16
    [11, 22, 33]
    false
    33

    队列的构造:

    import java.util.Arrays;
    
    /**
     * @author zhou
     * @date 2021-5-7 14:35
     * 队列
     */
    public class MyQueue {
        int[] elements;
        public MyQueue(){ // 初始化数组为0
            elements = new int[0];
        }
    
        public void show(){
            System.out.println(Arrays.toString(elements));
    
        }
    
        public void add(int element){ // 入队
            int[] newArr = new int[elements.length + 1];
            for (int i = 0; i < elements.length; i++) {
                newArr[i] = elements[i];
            }
            newArr[elements.length] = element;
            elements = newArr;
        }
    
        public void poll() { // 出队
            if (elements.length == 0) {
                throw new ArrayIndexOutOfBoundsException("Queue is empty");
            }
            int[] newArr = new int[elements.length - 1];
            for (int i = 0; i < newArr.length; i++) {
                newArr[i] = elements[i + 1];
            }
            elements = newArr;
        }
    
        public int peek() { // 查看队头元素
            if (elements.length == 0) {
                return -1;
            }
            return elements[0];
        }
    
        public boolean isEmpty(){
            return elements.length == 0;
        }
    }
    
    

    队列的测试类:

    /**
     * @author zhou
     * @date 2021-5-7 14:38
     * 用于测试手写队列
     */
    public class TestQueue {
        public static void main(String[] args) {
            MyQueue mq = new MyQueue();
            mq.add(22);
            mq.add(5);
            mq.add(66);
            mq.add(12);
            mq.add(33);
            mq.show();
            mq.poll(); // 出队
            mq.show();
            System.out.println(mq.isEmpty());
            System.out.println(mq.peek());
    
        }
    }
    
    

    运行结果:

    [22, 5, 66, 12, 33]
    [5, 66, 12, 33]
    false
    5

  • 相关阅读:
    Angular2学习笔记一
    @valid注解
    JPA注解@GeneratedValue
    java8 lambda 表达式
    Lombok的使用
    mybatis-plus的集成与使用
    mybatis之Sql语句构建器
    mybatis之使用注解
    php学习----异常处理(接上篇)
    php学习----错误处理和代码重用
  • 原文地址:https://www.cnblogs.com/saysayzhou/p/14767910.html
Copyright © 2011-2022 走看看