我很难让我的代码起作用。我正在尝试使用数据类获取所有deque元素,但这是行不通的。主要的德克是对的,但是他们的课出了点问题。
主德克
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的课
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我得到的输出
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我应该得到的输出
{ 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类代码有什么问题吗?真的会把它当学徒
发布于 2022-10-16 11:45:13
我想问题就在你的德克课上。在add_first和add_last方法中,没有正确地将新节点链接到列表的其余部分。
在add_first方法中,需要将新节点的下一个字段设置为指向列表的当前标题。然后,需要将Deque的head字段设置为指向新节点。
在add_last方法中,需要将新节点的下一个字段设置为None,因为它将是列表中的最后一个节点。然后,需要将Deque的尾部字段设置为指向新节点。
这是Deque类的固定代码。我希望这能帮到你。
从数据类型导入数据集输入任何
@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 = Nonehttps://stackoverflow.com/questions/74086811
复制相似问题