首页 > 编程语言 >算法题:用队列实现一个链表

算法题:用队列实现一个链表

时间:2024-09-27 21:22:52浏览次数:8  
标签:ListNode 队列 链表 算法 front null 节点 rear

下面是添加了注释的ListNode类和LinkedListQueue类,以帮助理解每个部分的功能和目的:

// 定义链表节点类,用于存储队列中的元素
class ListNode {  
    int val;  // 存储节点的值
    ListNode next;  // 指向下一个节点的指针

    // 构造函数,用于创建新的节点
    ListNode(int x) { 
        val = x;  // 初始化节点的值
    }  
}

// 使用链表实现的队列类
public class LinkedListQueue {  
    private ListNode front;  // 指向队列前端的指针
    private ListNode rear;   // 指向队列后端的指针

    // 构造函数,初始化空队列
    public LinkedListQueue() {  
        front = rear = null;  // 队列为空时,前端和后端都指向null
    }  

    // 入队操作
    // 参数:要加入队列的值
    // 返回值:布尔值,表示操作是否成功(在这个实现中总是返回true,因为不检查队列容量)
    public boolean enqueue(int value) {  
        ListNode newNode = new ListNode(value);  // 创建新节点
        if (rear == null) {  // 如果队列为空
            front = rear = newNode;  // 新节点既是前端也是后端
        } else {  // 如果队列不为空
            rear.next = newNode;  // 将新节点添加到当前后端的后面
            rear = newNode;  // 更新后端指针指向新节点
        }  
        return true;  // 入队操作总是成功
    }  

    // 出队操作
    // 返回值:队列前端的值(如果队列为空,则返回null)
    public Integer dequeue() {  
        if (front == null) {  // 如果队列为空
            return null; // 返回null,表示队列为空
        }  
        int value = front.val;  // 保存前端节点的值
        front = front.next;  // 前端指针向前移动到下一个节点
        if (front == null) {  // 如果前端指针变为null,说明队列现在为空
            rear = null;  // 更新后端指针也为null
        }  
        return value;  // 返回被移除的节点的值
    }  

    // 这里可以添加其他方法,如isEmpty()来检查队列是否为空,size()来返回队列中的元素数量等
}

这个LinkedListQueue类使用两个指针frontrear来分别跟踪队列的前端和后端,从而实现了队列的基本操作:入队(enqueue)和出队(dequeue)。
入队操作在队列的尾部添加新元素,而出队操作则移除并返回队列头部的元素。如果队列为空,则出队操作会返回null

标签:ListNode,队列,链表,算法,front,null,节点,rear
From: https://blog.csdn.net/qq_36329049/article/details/142602753

相关文章

  • 嵌入式学习--数据结构+算法
    嵌入式学习--数据结构+算法数据结构1.1数据1.2逻辑结构1.3存储结构1)顺序存储结构2)链式存储结构1.4操作(数据的运算)算法2.1算法与程序2.2算法与数据结构2.3算法的特性2.4如何评价一个算法的好坏?2.5时间复杂度2.6空间复杂度数据结构数据的逻辑结构、存储结构、......
  • 互联网信息服务算法备案最详细操作指引
        为了服务开发者便捷地开展算法备案,小编整理出算法备案的申请操作指引,用以帮助开发者有序完成算法备案工作,共同维护安全有序的网络环境。    互联网信息服务算法备案系统(以下简称备案系统)的官方网址为https://beian.cac.gov.cn    依据《互联网信......
  • 队列的深度解析:链式队列的实现
    引言队列是一种广泛应用于计算机科学的数据结构,具有先进先出(FIFO)的特性。在许多实际应用中,例如任务调度、缓冲区管理等,队列扮演着重要角色。本文将详细介绍队列的基本概念,并通过链表实现一个简单的队列。一、基本概念1.1定义队列是一种线性数据结构,遵循先进先出(FIFO,Firs......
  • 19. 删除链表的倒数第 N 个结点
    相当于删除正数第n个节点classSolution{public:ListNode*removeNthFromEnd(ListNode*head,intn){if(!head)returnhead;intlistLength=0;ListNode*temp=head;while(temp){temp=temp->next;......
  • 【鸟类识别系统】计算机毕设项目+卷积神经网络算法+人工智能+深度学习+模型训练+Pytho
    一、介绍鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网......
  • 【花朵识别系统】计算机毕设案例+卷积神经网络算法+人工智能+深度学习+Django网页界面
    一、介绍花朵识别系统。本系统采用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,并基于前期收集到的5种常见的花朵数据集(向日葵、玫瑰、蒲公英、郁金香、菊花)进行处理后进行模型训练,最后得到一个识别精度较高的模型,然后保存为本地的h5格式文件,便......
  • 【交通标志识别系统】计算机毕设案例+卷积神经网络算法+人工智能+深度学习+模型训练+D
    一、介绍交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Dj......
  • 算法速通-90题(1—完数难题)[含pyhton,java,c++]
    题目:完数难题 题目描述如下:    小明正在进行期末数学考试,现在他遇到了这样一个题:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数   比如6,28都是完数:6=1+2+3 ; 28=1+2+4+7+14。请判断两个正整数之间完数的个数。小明想请聪明的你帮......
  • 【算法题】72. 编辑距离-力扣(LeetCode)
    【算法题】72.编辑距离-力扣(LeetCode)1.题目下方是力扣官方题目的地址72.编辑距离给你两个单词word1和word2,请返回将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1="ho......
  • 地平线静态目标检测 MapTR 参考算法-V1.0
    1.简介高清地图是自动驾驶系统的重要组件,提供精确的驾驶环境信息和道路语义信息。传统离线地图构建方法成本高,维护复杂,使得依赖车载传感器的实时感知建图成为新趋势。早期实时建图方法存在局限性,如处理复杂地图元素的能力不足、缺乏实例级信息等,在实时性和后处理复杂度上存在挑战......