Inserimento in testa per un elenco collegato definito ricorsivamente

-1

Questo articolo afferma

However, this design does run into problems with some of the methods of the MutableSequence ABC. Most notably, insert and __ delitem __ can't operate on position 0, because you can't change the head of the list when the only reference you have is to the head of the list.

Se abbiamo un riferimento al nodo head , perché non possiamo semplicemente creare un nuovo nodo head che contiene il vecchio nodo head come tail

    
posta Trent Di 17.02.2018 - 05:24
fonte

1 risposta

1

I metodi insert e __delitem__ di MutableSequence ABC sono tenuti a eseguire una modifica sul posto della sequenza in cui li chiami.

Ciò significa che il codice come questo dovrebbe funzionare

len(sequence) == 1
sequence.insert(0, <a value>)
sequence.insert(0, <a value>)
len(sequence) == 3

Questo codice non cambia l'oggetto a cui fa riferimento sequence . Ciò significa anche che se sequence si riferisce effettivamente al nodo principale di un elenco collegato, non puoi inserire magicamente un nuovo nodo head prima di esso e fare in modo che sequence faccia riferimento a questo.

Questo è il problema a cui si riferisce l'articolo.

    
risposta data 17.02.2018 - 18:56
fonte

Leggi altre domande sui tag