我是一名Python初学者,我在使用这个程序时遇到了问题:
下面的程序是一个后进先出(LIFO)结构。我想将它改为先进先出(FIFO)结构的程序。
注意: "Rainbow" 应该在 "Arc" 底部或者按照FIFO(下图是LIFO)。
我在考虑像 NodeList 中添加一个新的类似 setPrevious 的定义,但我不知道怎么做。 (说实话,我对这些 self.head = none 的东西非常陌生,我过去通常写 self.items=[])。
任何帮助和提示都将不胜感激!谢谢!
下面的程序是一个后进先出(LIFO)结构。我想将它改为先进先出(FIFO)结构的程序。
from NodeList import Node
class QueueLL:
def __init__(self):
self.head = None
def enqueueQLL(self,item):
temp = Node(str(item))
temp.setNext(self.head)
self.head = temp
length = max(len(node.data) for node in self.allNodes()) if self.head else 0
print('\u2510{}\u250c'.format(' '*length))
for node in self.allNodes():
print('\u2502{:<{}}\u2502'.format(node.data, length))
print('\u2514{}\u2518'.format('\u2500'*length))
以下是 NodeList:
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self,newdata):
self.data = newdata
def setNext(self,newnext):
self.next = newnext
注意: "Rainbow" 应该在 "Arc" 底部或者按照FIFO(下图是LIFO)。
![](https://istack.dev59.com/Nk2Vc.webp)
任何帮助和提示都将不胜感激!谢谢!
list
对于栈来说是可以的,因为.append()
和.pop()
都很快。然而,它不适用于先进先出队列,因为.pop(0)
很慢(它的复杂度不是O(1)
)。使用collections.deque
作为先进先出队列的数据结构。 - nitsas