期权记-ETF期权开户导航 期权记是专业的50ETF300ETF期权开户投资交易导航

java队列

一、队列简单介绍

队列是一种常用的数据结构之一,与之前的栈类似,不过队列是“先进先出”。队列有队头(front)和队尾(rear),数据从队尾进入队列,从队头出队列,队头(front)指向队列的第一个数据,队尾(rear)指向队列中的最后一个数据。 

二、队列实现

队列有很多种,这里只是介绍最基本的实现,采用链式存储,也就是链式队列,与之前的链表存储形式一样,通过结点对象描述一个数据,结点对象包含具体数据和下一个结点的引用。

1、创建节点类

结点类就跟创建链表的结点类一样。

public class Node<T> {      // 存储的数据      private T data;      // 下一个节点的引用      private Node<T> next;        public Node(T data) {          this.data = data;      }        public T getData() {          return data;      }        public void setData(T data) {          this.data = data;      }        public Node<T> getNext() {          return next;      }        public void setNext(Node<T> next) {          this.next = next;      }    }

2、创建队列类LinkQueue

在LinkQueue类中成员变量及方法如下: 

成员变量:front、rear、size 

对应的行为方法有:入队、出队、获取队列元素个数、判断队列是否为空。

public class LinkQueue<T> {        // 队头      private Node<T> front;      // 队尾      private Node<T> rear;      // 元素个数      private int size;        /**       * 创建队列       */      public LinkQueue() {          rear = front = null;      }        /**       * 入队列       *        * @param data       */      public void enQueue(T data) {          Node<T> node = new Node<T>(data);          if (isEmputy()) {              front = rear = node;          } else {              rear.setNext(node);         rear = node;          }            size++;      }        /**       * 出队列       *        * @return 返回数据       */      public T deQueue() {          if (isEmputy()) {              throw new RuntimeException("队列为空");          }            Node<T> delete = front;          front = delete.getNext();          delete.setNext(null);; // help GC          size--;            if (size == 0) {              // 删除掉最后一个元素时,front值已经为null,但rear还是指向该节点,需要将rear置为null              // 最后一个结点front和rear两个引用都没指向它,帮助GC处理该节点对象              rear = front;          }        return (T) delete.getData();      }        /**       * 判断队列是否为空       * @return        */      public boolean isEmputy() {          return (front == null && rear == null) ? true : false;      }        /**       * 获取队列的元素个数       * @return       */      public int size() {          return this.size;      }    }

本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。

微信扫码关注

更新实时通知

作者:期权小韭菜 分类:网页教程 浏览:
请先 登录 再评论,若不是会员请先 注册