Python Linked list minimaler Wert

Ich versuche, den Minimalwert in der Liste zu finden, ohne die Min-Funktion nutzen zu müssen und nur durch Vergleich des ersten und des nächsten Elements über die Liste. Das ist mein Versuch:

def min(self): node = self.head #1st element Min = 0 #node.next_node is the next element while node: if node.value > node.next_node.value: Min = node.next_node.value else: Min = node.value 

Ich vergesse nur das erste und das zweite Element. Wie gehe ich durch die ganze Liste durch

  • Wie kann man den Wert eines Tensor-Objekts in TensorFlow drucken?
  • Wie kann ich eine JSON-Datei erstellen?
  • Wie bekomme ich letzte Artikel in Python?
  • Django-Sitzung funktioniert nicht in Firefox
  • Verschieben von Modellen zwischen Django (1.8) Apps mit erforderlichen ForeignKey Referenzen
  • Korrigieren Sie den Weg zur Emulation einzelner Präzisions-Gleitkomma in Python?
  • 2 Solutions collect form web for “Python Linked list minimaler Wert”

    Die Beantwortung dieser speziell wäre schwierig, ohne zu wissen, die Besonderheiten Ihrer Knoten Umsetzung, und da dies ist fast sicher ein Hausaufgabenproblem wäre sowieso nicht sportlich.

    Was Sie tun möchten, ist durch jedes Element der Liste zu gehen, und vergleichen Sie es mit dem Min, das Sie haben. Wenn es höher ist, dann geh einfach zum nächsten Element. Wenn es niedriger ist, dann setze Min auf den Wert und gehe zum nächsten Element. Es gibt keine Notwendigkeit, zwei Elemente direkt zu vergleichen: einfach alles vergleichen mit Min. Dieser Stil, durch eine Liste zu gehen und etwas mit einer einzigen Wertvariable zu tun, ist ziemlich nützlich: Sie können es auch für Dinge wie gleitende Durchschnitte verwenden.

    Es ist am einfachsten, wenn nicht erstaunlich elegant, um mit der Einstellung von Min auf den Wert des ersten Elements zu beginnen. So hast du etwas zu vergleichen. Wenn du es auf etwas anderes setzt, wie 0, dann, wenn alle deine Werte höher als 0 sind, wirst du niemals Min. Eine Alternative ist, Min auf etwas genügend großes zu setzen, aber das ist nicht so sicher, wie es einfach auf den Wert des ersten Elements setzt.

    Wie Sie durch die Liste schlafen, hängt davon ab, wie diese Liste entworfen ist. Etwas wie while node mit node = node.next_node kann funktionieren, wenn ein Knoten immer wahr ist und node.next_node am Ende der Liste ist None , da dies die Loop am Ende stoppt. Wenn du stattdessen am Ende einen Fehler machst, musst du noch etwas anderes machen.

    Um über die Liste zu iterieren, müssen Sie die node mit dem nächsten Knoten bei jeder Iteration aktualisieren:

     def rearrange(self): node = self.head if not node: return None # an empty list Min = node.value while node: if node.value < Min: Min = node.value node = node.next_node # move onto the next node return Min 

    Beachten Sie, dass diese Funktion schlecht benannt ist – was wird neu arrangiert?

    Python ist die beste Programmiersprache der Welt.