zoukankan      html  css  js  c++  java
  • Use LinkedList to implement Queue

     1 /*             H            tail
     2          (last in) 1->2->3->4 (1st in)
     3                       o/H
     4                             first-out
     5 
     6      */
     7 public class UseLinkedListImplementQueue {
     8     private ListNode head ;
     9     private ListNode tail ;
    10     private int length;
    11 
    12     public UseLinkedListImplementQueue() {
    13         head = null ;
    14         tail = null ;
    15         length = 0;
    16     }
    17 
    18     public void offer(int val){
    19         ListNode node = new ListNode(val) ;
    20         node.next = head ;
    21         head = node ;
    22         length++;
    23         syncHeadAndTail();
    24     }
    25     // 1->2->3->4   to 1->2->3
    26     public Integer poll(){
    27         if (tail == null)  return null;
    28         int value = tail.val ;
    29         ListNode curr = head ;
    30         while (curr != null && curr.next != tail){
    31             curr = curr.next ;
    32         }
    33         //now curr.next -> tail
    34         curr.next = null ;
    35         //move tail to curr
    36         tail = curr ;
    37         length-- ;
    38         syncHeadAndTail();
    39         return value ;
    40     }
    41 
    42     public Integer peek(){
    43         if (tail == null) return null ;
    44         return tail.val ;
    45     }
    46 
    47     public boolean isEmpty(){
    48         return this.length <= 0 ;
    49     }
    50 
    51     public int getSize(){
    52         return this.length ;
    53     }
    54 
    55     private void syncHeadAndTail(){
    56      if (this.length == 0){
    57          head = null ;
    58          tail = null ;
    59      }
    60      if (this.length == 1){
    61          tail = head ;
    62      }
    63     }
    64 
    65     public static void main(String[] args) {
    66         UseLinkedListImplementQueue queue = new UseLinkedListImplementQueue() ;
    67         queue.offer(1);
    68         queue.offer(2);
    69         System.out.println(queue.poll());
    70         queue.offer(3);
    71         queue.offer(4);
    72         System.out.println(queue.poll());
    73         System.out.println(queue.poll());
    74 
    75     }

  • 相关阅读:
    中国内地、台湾、香港、澳门和国外DNS服务器地址列表
    科学、道法、哲学
    Away 3d 基本属性
    away 3d的一些问题
    Adobe Flash CC 2014 下载及破解
    html5结合flash实现视频文件在所有主流浏览器兼容播放
    Html wmode 标签参数详解
    九宫格
    flash/flex 编译错误汇总
    Redis在windows下安装过程(转)
  • 原文地址:https://www.cnblogs.com/davidnyc/p/8648445.html
Copyright © 2011-2022 走看看