• 6、队列的链式存储、含首尾指针的单链表


     1 package ren.laughing.datastructure.baseImpl;
     2 
     3 import ren.laughing.datastructure.base.Queue;
     4 import ren.laughing.datastructure.exception.QueueEmptyException;
     5 /**
     6  * 队列的链式存储
     7  * 单链表、含有队首和队尾指针
     8  * @author Laughing_Lz
     9  * @time 2016年4月7日
    10  */
    11 public class QueueLinked implements Queue {
    12     private SLNode front;//队首指针,指向链表空的头结点
    13     private SLNode rear;//队尾指针,指向链表的队尾元素
    14     private int size;//队的容量
    15     
    16     public QueueLinked() {
    17         front = new SLNode();
    18         rear = front;//队列初始为空,队首指针和队尾指针均指向空的头结点
    19         size = 0;
    20     }
    21     
    22     @Override
    23     public int getSize() {
    24         return size;
    25     }
    26 
    27     @Override
    28     public boolean isEmpty() {
    29         return size == 0;
    30     }
    31     //入队:从队尾入队,相当于insertAfter队尾结点rear
    32     @Override
    33     public void enqueue(Object e) {
    34         SLNode node =new SLNode(e, null);//写出rear.getNext()应该也可以?
    35         rear.setNext(node);
    36         rear = node;
    37         size++;
    38     }
    39     //出队:从队首出队,相当于removeAfter队首头结点front
    40     @Override
    41     public Object dequeue() throws QueueEmptyException {
    42         if(size <= 0){
    43             throw new QueueEmptyException("错误:队列为空");
    44         }
    45         SLNode node = front.getNext();//要删除的队首数据元素
    46         front.setNext(node.getNext());
    47         size--;
    48         if(size <= 0){//★再次判断size,若已全部出队,则将rear指针也和front指针一样指向空的头结点
    49             rear = front;
    50         }
    51         return node.getData();
    52     }
    53     
    54     @Override
    55     public Object peek() throws QueueEmptyException {
    56         if(size <= 0){
    57             throw new QueueEmptyException("错误:队列为空");
    58         }
    59         SLNode node = front.getNext();
    60         return node.getData();
    61     }
    62 
    63 }
    —————————————————————————————————————行走在人猿的并行线——Laughing_Lz
  • 相关阅读:
    关于获取多个id的用法
    纯css打造凹进与突出效果
    ie8兼容半透明效果css
    常用函数积累
    ie兼容图片缩小后模糊失真(锯齿)问题
    图片放大_css3
    弹出层跳出原框架
    ifame_自适应高度
    POJ #2479
    SPOJ #752. Power it!
  • 原文地址:https://www.cnblogs.com/Laughing-Lz/p/5365285.html
Copyright © 2020-2023  润新知