使用一个节点实现环形Queue

本文介绍了如何使用一个节点来实现环形Queue,遵循《算法4》中的1.3.29练习要求。通过环形链表结构,利用一个Node类型的实例变量last管理队列,确保在队列非空时last.next指向first。入队操作发生在last之后,last随后后移;出队操作则从last之后开始。特别地,当只有一个节点时,该节点同时作为首节点和尾节点,初始化时要设定好first。
摘要由CSDN通过智能技术生成
  • 在《算法4》的103页,练习1.3.29中要求

用环形链表实现Queue。环形表也是一条链表,只是没有任何节点的链接为空,且只要链表非空则last.next的值为first。只能使用一个Node类型的实例变量(last)。

  • 考虑到队列的特性,入队元素一定是插在last节点之后,last节点后移。而出队元素位于last节点之后。明白这一点还需要注意当只有一个节点时,该节点既是是首节点又是尾节点,所以在构造函数中一定有last.next = last;。这行代码很关键,它用于记录首节点位置。
public class RecycleQueue<Item> {
    //尾节点也是当前节点(current)
    Node last;
    //队列中元素的个数
    int N;
    //节点Node
    private class Node<Item>{
        //该节点的值
        Item item;
        //后节点
        Node next;
        public Node(Item item,Node next){
            this.item = item;
            this.next = next;
        }
    }
    public RecycleQueue(Item item){
        last = new Node(item,null);
        //既是尾节点又是首节点,需要自己和自己建立关联
        //这步很关键
        //它记录了last的下一个节点(首节点)
        last.next = last;
        N = 1;
    }
    //void enqueue(Item ite
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值