2016-11-04 2 views
0

Unten ist der Block des Codes, an dem ich arbeite, es ist für die Schule, so dass ich nicht für die Antwort nur ein wenig Anleitung frage. Habe schon eine ganze Weile daran gearbeitet und vielleicht wurde ich einfach probiert. Könnte mir jemand den Fehler meiner Wege erklären?Wie man Pop-Funktion in einer doppelt verknüpften Python-Liste implementieren

def pop(self, idx=-1): 
    """Deletes and returns the element at idx (which is the last element, 
    by default).""" 
    nidx = self._normalize_idx(idx) 
    if nidx >= len(self): 
     raise IndexError 
    n = self.head 
    for _ in range(self[-1]): 
     n = n.next 
    return n 
    n.prior.next = n.next 
    n.next.prior = n.prior 
    self.length -= 1 
+0

Erhalten Sie irgendwelche Fehler? Was ist dein Beitrag? Was ist Ihre Ausgabe im Vergleich zu Ihrer erwarteten Ausgabe? Auch Sie wissen, keine der Zeilen nach der Rückkehr wird jemals richtig laufen? Die Methode wird an diesem Punkt beendet – IanAuld

Antwort

0

Ich denke, Ihre Fehler alle in diesen Zeilen sind:

for _ in range(self[-1]): 
    n = n.next 
return n 

Die Grenzen Sie Ihre range Anruf mit bizarr ist. Wahrscheinlich willst du nidx mal iterieren, nicht was auch immer self[-1] ist.

Sie möchten wahrscheinlich auch nicht return an diesem Punkt, da eine return stoppt den Rest der Funktion ausgeführt wird. Versuchen Sie, die return Zeile so zu verschieben, dass sie unter dem Entlinkungscode liegt.

Sie müssen auch entscheiden, ob Sie einen Knoten zurückgeben wollen (der fehlerhafte Links hat, wenn Sie n.next und n.prior nicht zurücksetzen) oder einen Wert, der im Knoten enthalten ist. Normalerweise sind die Knoten einer verknüpften Liste Implementierungsdetails, die nicht mit externem Code in Verbindung gebracht werden. Daher würden Sie den Wert zurückgeben.

Verwandte Themen