Python: First In First Out Imprimer
Je suis débutant en python et j'ai un problème avec ce programme:
Le programme ci-dessous est un Last In First Out (LIFO). Je veux faire en Premier entré Premier Sorti (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))
Ici est la 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
REMARQUE: Le "arc-en-ciel" devrait être à la base de "l'Arc" ou FIFO (photo ci-dessous est LIFO)
Je suis en train de penser à mettre un nouveau def comme setPrevious dans le NodeList Mais je ne sais pas comment. (pour être honnête, je suis vraiment nouveau sur ces soi-même.tête = none pour animaux . J'ai utilisé pour écrire soi-même.items = [])
Toute l'aide et les conseils seront appréciés! Merci!!!!
OriginalL'auteur arcwinolivirus | 2013-10-07
Vous devez vous connecter pour publier un commentaire.
En plus de l'apprentissage, je ne vous conseille pas d'utiliser des structure de données pour faire une LIFO ou FIFO. Construit dans le type de données
list
est juste très bien, après tout.Vous pouvez ajouter des éléments à l'aide de la
append
méthode et de les supprimer à l'aide depop
. Pour un PRINCIPE cela devrait ressembler à ceci:Si vous fournissez un argument entier pour
pop
vous pouvez spécifier l'élément à supprimer. Pour une FIFO utilisation de l'index0
pour le premier élément:pourquoi avez-vous besoin d'une liste chaînée?
Je suis tenu dans notre classe pour implémenter une file d'attente (y compris d'autres structures de données les types) à l'aide de linklist.
list
est très bien pour une pile depuis deux.append()
et.pop()
sont rapides. Cependant, il n'est pas le meilleur pour une file d'attente FIFO parce que.pop(0)
est lent (c'est la complexité n'est pasO(1)
). Utilisationcollections.deque
FIFO.OriginalL'auteur Constantinius
Bien, en voyant que votre classe est probablement plus maintenant, et vous n'avez pas mentionné votre classe (ou qu'il avait une liste liée) dans la question elle-même, je vais juste vous dire le haut-moyen facile de le faire, pour l'instant, ce qui est probablement la plus pertinente à votre situation actuelle (et aider les personnes à trouver votre question).
Ce sorties
Vraiment, si je ne suis pas sûr que les avantages que cela a plus de Constantinius réponse, mais puisqu'il est inclus dans le module, je pense que il doit y avoir un avantage quelque part. Je sais qu'ils sont utilisés avec les fils de l'enfilage du module. Il y a plus de fonctions associées à des Files d'attente que je l'ai mentionné ici.
Pour en savoir plus, ouvrez votre interpréteur Python et tapez ceci:
Ne me demandez pas ce que le blocage est, mais ce peut utiliser le terme de comment il est utilisé dans la File d'attente de documentation de classe:
http://en.wikipedia.org/wiki/Blocking_(computing)
OriginalL'auteur Shule
OriginalL'auteur Vinoth Karthick