首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用数据类的所有deque元素

使用数据类的所有deque元素
EN

Stack Overflow用户
提问于 2022-10-16 11:41:25
回答 1查看 41关注 0票数 0

我很难让我的代码起作用。我正在尝试使用数据类获取所有deque元素,但这是行不通的。主要的德克是对的,但是他们的课出了点问题。

主德克

代码语言:javascript
复制
import Deque as deq

# Program starts
empty = deq.Deque()     # An empty deque
deque = deq.Deque()     # To be filled

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

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

 print("\nget_last():", deque.get_last())
 print("get_last() on empty deque:", empty.get_last())

 print("\nget_first():", deque.get_first())
 print("get_first() on empty deque:", empty.get_first())

 print("\nremove_first():", deque.remove_first())
 print("remove_first() on empty deque:", empty.remove_first())

 print("\nremove_last():", deque.remove_last())
 print("remove_last() on empty deque:", empty.remove_last())

 print(deque.to_string())
 print("Size:", deque.size)

 print("\nTest to remove all elements")
 temp = deq.Deque()
 for i in range(100, 106):
   temp.add_first(i)
 print("After adding elements:", temp.to_string())
 while temp.size > 0:
   temp.remove_last()
 print("After removing all elements:", temp.to_string())
 print("Size:", temp.size)

这是Deque的课

代码语言:javascript
复制
from dataclasses import dataclass
from typing import Any



@dataclass
class Node:
value: int = None
nxt: Any = None  # Any since Node not properly defined at this point


@dataclass
class Deque:
   head: Node = None      # First node in queue
   tail: Node = None      # Last node in queue
   size: int = 0


 def add_last(self, n):
    new = Node(n, None)
    if self.head is None:
        self.head = new
        self.tail = new
    else:
        self.tail.nxt = new
        self.tail = new
    self.size += 1

def to_string(self):
    s = "{ "
    node = self.head
    while node is not None:
        s += str(node.value) + " "
        node = node.nxt
    s += "}"
    return s

def add_first(self, n):
    new = Node(n, None)
    if self.head is None:
        self.head = new
        self.tail = new
    else:
        self.tail.nxt = new
        self.tail = new
    self.size += 1

def get_last(self):
    if self.tail is None:
        print("Get can't be applied on an empty list")
        return None
    else:
        return self.tail.value


def get_first(self):
    pass


def remove_first(self):
    pass


def remove_last(self):
    pass

我得到的输出

代码语言:javascript
复制
None
Size: 0
None
Size: 0

get_last(): None
get_last() on empty deque: None

get_first(): None
get_first() on empty deque: None

remove_first(): None
remove_first() on empty deque: None

remove_last(): None
remove_last() on empty deque: None
None
Size: 0

Test to remove all elements
After adding elements: None
After removing all elements: None
Size: 0

我应该得到的输出

代码语言:javascript
复制
{ 1 2 3 4 5 6 7 8 9 10 }
Size: 10
{ 20 19 18 17 16 15 14 13 12 11 1 2 3 4 5 6 7 8 9 10 }
Size: 20

get_last(): 10
You can't access an empty queue
get_last() on empty deque: None

get_first(): 20
You can't access an empty queue
get_first() on empty deque: None

remove_first(): 20
You can't access an empty queue
remove_first() on empty deque: None

remove_last(): 10
You can't access an empty queue
remove_last() on empty deque: None
{ 19 18 17 16 15 14 13 12 11 1 2 3 4 5 6 7 8 9 }
Size: 18

Test to remove all elements
After adding elements: { 105 104 103 102 101 100 }
After removing all elements: { }
Size: 0

但是,我还没有完成整个代码,如果没有def add_first def add_last,我就无法启动。有人知道Deque类代码有什么问题吗?真的会把它当学徒

EN

回答 1

Stack Overflow用户

发布于 2022-10-16 11:45:13

我想问题就在你的德克课上。在add_first和add_last方法中,没有正确地将新节点链接到列表的其余部分。

在add_first方法中,需要将新节点的下一个字段设置为指向列表的当前标题。然后,需要将Deque的head字段设置为指向新节点。

在add_last方法中,需要将新节点的下一个字段设置为None,因为它将是列表中的最后一个节点。然后,需要将Deque的尾部字段设置为指向新节点。

这是Deque类的固定代码。我希望这能帮到你。

从数据类型导入数据集输入任何

代码语言:javascript
复制
@dataclass
class Node:
value: int = None
nxt: Any = None  # Any since Node not properly defined at this point


@dataclass
class Deque:
   head: Node = None      # First node in queue
   tail: Node = None
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74086811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档