求助:基于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) + " }"
代码说明
add_last方法逻辑:
- 先创建承载待添加值的新
Node对象。 - 若队列为空,头节点和尾节点直接指向新节点。
- 若队列非空,将原尾节点的
nxt属性指向新节点,再更新尾节点为新节点。 - 最后将队列长度
size加1,保证长度统计准确。
- 先创建承载待添加值的新
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
相关产品推荐
相关产品推荐

