• 线性结构——栈和队列


    栈类

     1 public class MyStack<T> {
     2     //栈的大小
     3     private int size;
     4     //存放栈的数组
     5     private Object[] data;
     6     
     7     /**
     8      * 无参构造方法,初始化数组大小
     9      */
    10     public MyStack() {
    11         size = -1;
    12         data = new Object[10];
    13     }
    14     
    15     /**
    16      * 有参构造方法,自定义数组大小
    17      */
    18     public MyStack(int len) {
    19         size = 0;
    20         if(len < 0) {
    21             len = 5;
    22         }
    23         data = new Object[len];
    24     }
    25     
    26     /**
    27      * 出栈
    28      * @param t
    29      * @return
    30      */
    31     public boolean push(T t) {
    32         if(size == data.length) {
    33             return false;
    34         }else {
    35             data[++size] = t;
    36             return true;
    37         }
    38     }
    39     
    40     /**
    41      * 入栈
    42      * @return
    43      */
    44     public T pop() {
    45         if(size == data.length) {
    46             return null;
    47         }else {
    48             return (T) data[size--];
    49         }
    50     }
    51     
    52     /**
    53      * 查看栈顶元素
    54      * @return
    55      */
    56     public T peek() {
    57         if(size == data.length) {
    58             return null;
    59         }else {
    60             return (T) data[size];
    61         }
    62     }
    63     
    64     /**
    65      * 查看数组大小
    66      * @return
    67      */
    68     public int size() {
    69         return size;
    70     }
    队列类
     1 public class MyQueue<T> {
     2     //存放队列的数组
     3     private Object[] data;
     4     
     5     /**
     6      * 无参构造方法,初始化数组大小
     7      */
     8     public MyQueue() {
     9         data = new Object[0];
    10     }
    11     
    12     //入队
    13     public void add(T t) {
    14         // 创建一个新的数组
    15         Object[] newArr = new Object[data.length + 1];
    16         // 把原数组中的元素复制到新数组中
    17         for (int i = 0; i < data.length; i++) {
    18             newArr[i] = data[i];
    19         }
    20         // 把添加的元素放入新数组中
    21         newArr[data.length] = t;
    22         // 使用新数组替换旧数组
    23         data = newArr;
    24     }
    25     
    26     //出队
    27     public T poll() {
    28         //把数组中的第0个元素取出来
    29         T element = (T) data[0];
    30         //创建一个新的数组
    31         Object[] newArr = new Object[data.length - 1];
    32         //复制原数组中的元素到新数组中
    33         for(int i = 0; i < newArr.length;i++) {
    34             newArr[i] = data[i + 1];
    35         }
    36         //替换数组
    37         data=newArr;
    38         return element;
    39     }
    40     
    41     //判断队列是否为空
    42     public boolean isEmpty() {
    43         return data.length == 0;
    44     }
    45     
    46     /**
    47      * 查看数组大小
    48      * @return
    49      */
    50     public int size() {
    51         return data.length;
    52     }
  • 相关阅读:
    Spring源码分析(五)获取Document
    Spring源码分析(四)容器的基础XmlBeanFactory
    Spring源码分析(三)容器核心类
    Spring源码分析(二)容器基本用法
    day23 框架之基础加强
    Java web项目综合练习(Estore)
    第16 天 JavaWEB过滤器和监听器技术
    第17天 笔记 文件上传下载
    Javaweb 第15天 web练习和分页技术
    【剑指offer】数组中的逆序对,C++实现
  • 原文地址:https://www.cnblogs.com/pengao/p/10858339.html
Copyright © 2020-2023  润新知