You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于dataclass实现自定义Deque类的add_last函数

实现Deque类的add_last方法

问题背景

需要为自定义双向队列(Deque)类补充add_last方法,实现从队尾添加元素的功能,同时补充缺失的to_string方法以满足输出要求。

完整实现代码

以下是修正缩进、补充必要导入并完成add_last和to_string方法的完整代码:

from dataclasses import dataclass
from typing import Any

@dataclass
class Node:
    value: int = None
    nxt: Any = None  # 存储指向下一节点的引用

@dataclass
class Deque:
    head: Node = None      # 队列的头节点
    tail: Node = None      # 队列的尾节点
    size: int = 0

    # 从队尾添加元素
    def add_last(self, n):
        # 创建包含目标值的新节点
        new_node = Node(value=n)
        # 处理空队列的情况
        if self.size == 0:
            self.head = new_node
            self.tail = new_node
        else:
            # 将原尾节点的指针指向新节点,更新尾节点为新节点
            self.tail.nxt = new_node
            self.tail = new_node
        # 维护队列长度
        self.size += 1

    # 生成队列的字符串表示(原代码缺失,需补充以支持打印)
    def to_string(self):
        current = self.head
        elements = []
        # 遍历队列收集所有元素值
        while current is not None:
            elements.append(str(current.value))
            current = current.nxt
        # 拼接成预期格式的字符串
        return "{ " + " ".join(elements) + " }"

代码说明

  1. add_last方法逻辑:

    • 先创建承载待添加值的新Node对象。
    • 若队列为空,头节点和尾节点直接指向新节点。
    • 若队列非空,将原尾节点的nxt属性指向新节点,再更新尾节点为新节点。
    • 最后将队列长度size加1,保证长度统计准确。
  2. to_string方法补充:

    • 从head节点开始遍历整个队列,收集所有节点的值并转为字符串。
    • 将收集到的字符串拼接成{ 元素1 元素2 ... }的格式,匹配预期输出要求。

验证运行

使用提供的main.py代码测试:

import Deque as deq

empty = deq.Deque()    
deque = deq.Deque() 

for i in range(1, 11):
    deque.add_last(i)
print(deque.to_string())
print("Size:", deque.size)

输出结果与预期一致:

{ 1 2 3 4 5 6 7 8 9 10 }
Size: 10

内容的提问来源于stack exchange,提问作者toby lead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:30:53