0
votes

Essayer de primer une liste liée à Python

Mon professeur m'a demandé d'effectuer un tour rapide pour une liste liée. Cela devient assez déroutant car toute la récursion et les liens sont toujours très nouveaux pour moi. Le problème semble être avec quelque chose d'attribuer involontairement comme aucun Ceci est mon code jusqu'à présent: xxx

exécutant cela donne l'erreur suivante xxx

toute aide serait très appréciée


2 commentaires

Vous ne vérifiez pas si des éléments se retrouvent plus petits ou autres. Chacun peut être vide si la tête est plus grande / plus petite que tous les autres éléments.


Le code de questions est similaire dans le concept de Quicksort, mais ce n'est pas rapide, ce qui impliquerait un échange de nœuds. Assurez-vous que cette approche est acceptable pour le professeur.


4 Réponses :


0
votes

Lisez attentivement vos codes d'erreur. Il dit

File "main.py", line 51, in sort
while ptr.next!=None:
AttributeError: 'NoneType' object has no attribute 'next'


0 commentaires

1
votes

vous triez () La fonction échoue car PTR code> ne peut être pas lorsque vous arrivez à votre boucle. Ce n'est pas évident d'abord à cause de votre chèque au début xxx pré>

mais l'appel à self.removeval (pivot) code> définira votre pointeur de tête sur aucun si La liste n'a qu'une entrée. Notez que cela se produira toujours lors de votre QuickSort éventuellement, car vous décomposez votre liste de manière récursive. Finalement, il doit s'agir d'une liste de 1 élément et donc échouer. P>

Lorsque cela se produit, vous obtenez la stacktrace que vous avez affichée où il est indiqué: p>

self.head = smaller.head


1 commentaires

Merci beaucoup pour votre réponse claire et détaillée.



0
votes

Comme commenté ci-dessus, assurez-vous que l'approche présentée dans la question sera acceptable comme étant un tour rapide. Vous pourriez envisager de créer 3 listes, des nœuds pivot et utilisez uniquement la récursivité sur la liste 2 de nœuds! = Pivot. L'ajout d'une référence de queue à la liste accélérera les opérations d'appends. Exemple de code où le QuicksTort vient des nœuds pour les réorganiser au lieu d'attribuer constamment des nœuds. xxx


0 commentaires

1
votes

Voici le code complet xxx

sortie xxx


0 commentaires