链表式队列JAVA实现

链表式队列JAVA实现:


public class LinkedQueue<E> {
      
      static class Node<E>{
            E item;
            
            Node<E> next;
            
            Node(E e) { item = e; }
      }
      
      private Node<E> head;//头节点
      
      private Node<E> last;//尾节点
      
      private int size;
      
      public boolean isEmpty(){
//          return head == null;
            return size == 0;
      }
      
      //入队
      public void enqueue(Node<E> node){
            last = last.next = node;
            last.next = head;
            size++;
      }
      
      //出队
      public E dequeue(){
            Node<E> n = head;
            Node<E> first = head.next;
            head = first;
            E e = n.item;
            n.item = null;
            size--;
            return e;
      }
      
      //获取大小
      public int size(){
            /*Node<E> tmp = head;
            int len = 0;
            while(tmp != null){
                  tmp = tmp.next;
                  len++;
            }
            return len;*/
            return size;
      }
      
      //放元素进链表队列
      public void offer(E e){
            Node<E> node = new Node<E>(e);
            if(isEmpty()){
                  head = node;
                  last = node;
            }
            enqueue(node);
            
      }
      
      //取出元素出链表队列
      public E poll(){
            E e = dequeue();
            return e;
      }
      
      //获取链表队列头元素
      public E peek(){
            if(isEmpty()){
                  return null;
            }
            return head.item;
      }
      public static void main(String[] args) {
            LinkedQueue<String> queue = new LinkedQueue<>();
        queue.offer("a");
        queue.offer("b");
        queue.offer("c");
        queue.offer("d");
        System.out.println("head =" + queue.head.item);
        System.out.println("head.next =" + queue.head.next.item);
        System.out.println("last =" + queue.last.item);
        System.out.println("last.next =" + queue.last.next.item);
       
        System.out.println(queue.size());
        System.out.println(queue.poll());
        System.out.println(queue.size());
        System.out.println(queue.poll());
        System.out.println(queue.size());
        System.out.println(queue.peek());
        System.out.println(queue.size());
        queue.offer("e");
        System.out.println(queue.size());
       
        System.out.println("head =" + queue.head.item);
        System.out.println("head.next =" + queue.head.next.item);
        System.out.println("last =" + queue.last.item);
        System.out.println("last.next =" + queue.last.next.item);
    }
      
}

闲来无事学习一下Queue相关知识,麻烦各位看看,有上面地方可以改进的~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值