Just do it
专注做自己的事,有想做的事就去做好了
题目解析

队列的特点是先进先出,其实和单链表的结构类似。我们只需要实现队列的基本功能即可。

  • 定义队列
class LinkedListQueue:  
    def __init__(self):  
        # 初始化队列的头尾指针和大小  
        self.head = None  # 队列头部节点  
        self.tail = None  # 队列尾部节点  
        self.size = 0  # 队列中元素的数量
  • 判空
def is_empty(self):  
    """检查队列是否为空"""  
    return self.size == 0
  • 查看当前有多少元素
def get_size(self):  
    """返回队列中元素的数量"""  
    return self.size
  • 入栈
def offer(self, value):  
    """向队列尾部添加元素"""  
    # 创建新节点  
    node = ListNode(value)  
  
    if self.is_empty():  
        # 如果队列为空,新节点同时成为头尾节点  
        self.head = node  
        self.tail = node  
        self.size += 1  
    else:  
        # 如果队列不为空,将新节点链接到尾部,并更新尾指针  
        self.tail.next = node  
        self.tail = node  
        self.size += 1  
    return self  # 支持链式调用
  • 查看head元素
def peek(self):  
    """查看队列头部元素但不移除"""  
    if self.is_empty():  
        return None  # 队列为空时返回None  
    else:  
        return self.head.val  # 返回头部节点的值
  • 处栈
def poll(self):  
    """移除并返回队列头部元素"""  
    if self.is_empty():  
        raise Exception("Queue is empty")  # 队列为空时抛出异常  
  
    # 保存头部节点的值  
    value = self.head.val  
    # 将头指针移动到下一个节点  
    self.head = self.head.next  
    self.size -= 1  
  
    # 重要:如果移除后队列为空,需要同时更新尾指针为None  
    # 防止tail指针悬空指向已移除的节点  
    if self.head is None:  
        self.tail = None  
  
    return value  # 返回被移除的元素值
posted on 2025-09-30 14:52  Ireck  阅读(1)  评论(0)    收藏  举报