美文网首页
用数组实现栈和队列

用数组实现栈和队列

作者: shoulda | 来源:发表于2018-07-15 21:36 被阅读0次

1.用数组实现栈Array to Stack

size是下一个放数的位置

public static class ArrayStack {
        private Integer[] arr;
        private Integer size;

        public ArrayStack(int initSize) {
            if (initSize < 0) {
                throw new IllegalArgumentException("The init size is less than 0");
            }
            arr = new Integer[initSize];
            size = 0;
        }

        public Integer peek() {
            if (size == 0) {
                return null;
            }
            return arr[size - 1];
        }

        public void push(int obj) {
            if (size == arr.length) {
                throw new ArrayIndexOutOfBoundsException("The queue is full");
            }
            arr[size++] = obj;
        }

        public Integer pop() {
            if (size == 0) {
                throw new ArrayIndexOutOfBoundsException("The queue is empty");
            }
            return arr[--size];
        }
    }

2.用数组实现队列

用3个变量来控制数组
size 表示大小,用来控制first,last的运动
first表示最开始的
last表示最后的

public static class ArrayQueue {
        private Integer[] arr;
        private Integer size;
        private Integer first;
        private Integer last;

        public ArrayQueue(int initSize) {
            if (initSize < 0) {
                throw new IllegalArgumentException("The init size is less than 0");
            }
            arr = new Integer[initSize];
            size = 0;
            first = 0;
            last = 0;
        }

        public Integer peek() {
            if (size == 0) {
                return null;
            }
            return arr[first];
        }

        public void push(int obj) {
            if (size == arr.length) {
                throw new ArrayIndexOutOfBoundsException("The queue is full");
            }
            size++;
            arr[last] = obj;
            last = last == arr.length - 1 ? 0 : last + 1;
        }

        public Integer poll() {
            if (size == 0) {
                throw new ArrayIndexOutOfBoundsException("The queue is empty");
            }
            size--;
            int tmp = first;
            first = first == arr.length - 1 ? 0 : first + 1;
            return arr[tmp];
        }
    }

相关文章

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 用数组实现栈、队列

    用数组实现一个栈 用数组实现一个队列 用单链表实现给队列

  • 实现链表_链表实现栈和队列_3

    之前用数组实现栈和队列,虽然有resize操作,但是其实还是静态数组,不是真正的动态。当我们用链表实现栈和队列的时...

  • 数据结构java描述

    接口 栈 队列 集合 并查集 映射 数组 链表 栈 数组实现 链表实现 队列 数组实现 链表实现 二分搜索树 集合...

  • 用数组实现栈和队列

    1.用数组实现栈Array to Stack size是下一个放数的位置 2.用数组实现队列 用3个变量来控制数组...

  • 7天练|Day2:栈、队列和递归

    关于栈、队列和递归的几个必知必会的代码实现栈用数组实现一个顺序栈用链表实现一个链式栈编程模拟实现一个浏览器的前进、...

  • 第四章_栈和队列_2019-03-20

    基本知识点 栈:先进后出,队列:先进先出 栈和队列都既能用数组实现,又能用链表实现 栈和队列的基本操作:pop()...

  • 栈和队列

    一、定义 栈:先进后出 队列:先进先出 二、题目 1.用数组结构实现大小固定的栈和队列 2.返回栈中最小元素 题意...

  • 算法学习笔记-基础开篇

    算法定义 基础问题 三种基础的抽象数据类型:背包、队列、栈 用数组、变长数组、链表实现背包、队列、栈的api。 数...

  • JavaScript⑦数组队列

    栈和队列: js中没有专门的栈和队列类型,都是用普通该数组模拟的。 何时: 只要希望按照顺序使用数组元素时 栈: ...

网友评论

      本文标题:用数组实现栈和队列

      本文链接:https://www.haomeiwen.com/subject/xwqmpftx.html