Beispiel für die Antwort auf den Python-Code --2.2 Geben Sie Kth von hinten zurück

Beispiel für die Antwort auf den Python-Code --2.2 Geben Sie Kth von hinten zurück

CHAP2. Verkettete Liste

  1. Doppelte Elemente entfernen
  2. Kth von hinten zurückgeben
  3. Elemente zwischen entfernen
  4. Geteilte Liste (https://qiita.com/YusukeEngineer/items/030ad252bd779bd479bf)
  5. Summe von zwei in der Liste dargestellten Zahlen
  6. Kommentar
  7. Knoten schneiden

Beispiel für eine Python-Codelösung

python



from chap2_function import* 

def printKthToLast(head_node,k):

    if head_node == None:
        return 0

    index = printKthToLast(head_node.next,k) + 1

    if index == k:
        print(str(k)+"th to last node is "+str(head_node.data))

    return index


dll = DoublyLinkedList() 

# DLL: None -> 1(Kopf) -> 7 -> 4 -> 6 -> 4(letzte) -> None 
dll.append(6)  
dll.push(7) 
dll.push(1) 
dll.append(4) 
dll.insert(dll.head.next, 4) 

dll.printList(dll.head) 

printKthToLast(dll.head,2)

Python-Funktionen (Knotenklasse, bidirektionale Listenklasse)

chap2_function.py


#Knotenklasse
class Node: 
  
    #Konstrukteur
    def __init__(self, data): 
        self.data = data 
        self.next = None
        self.prev = None
  
#Bidirektionale Listenklasse
class DoublyLinkedList: 
  
    #Konstrukteur
    def __init__(self): 
        self.head = None
  
    #Knoten vom ersten Knoten einfügen
    def push(self, new_data): 
  
        #Knotengenerierung
        new_node = Node(new_data) 
  
        #Machen Sie den nächsten Knoten des neuen Knotens zu dem, der an erster Stelle der Hauptknoten war
        new_node.next = self.head 
  
        #Obwohl es sich in erster Linie um einen Kopfknoten handelte, wird der vorherige Knoten in einen neuen Knoten geändert
        if self.head is not None: 
            self.head.prev = new_node 
  
        #Machen Sie den neuen Knoten zu einem Kopfknoten
        self.head = new_node 
  
    #Einfügen eines Knotens an einem Zwischenpunkt
    def insert(self, prev_node, new_data): 
  
        # prev_Geben Sie an, ob ein Knoten nach dem vom Knoten angegebenen Knoten eingefügt werden soll
        #Wenn Keine, beenden Sie die Funktion
        if prev_node is None: 
            print("the given previous node cannot be NULL")
            return 
  
        #Knotengenerierung
        new_node = Node(new_data) 
  
        #Zurück zum nächsten Knoten des neuen Knotens_Machen Sie es zum nächsten Knoten des vom Knoten angegebenen Knotens
        new_node.next = prev_node.next
  
        # prev_Macht den nächsten Knoten des vom Knoten angegebenen Knotens zu einem neuen Knoten
        prev_node.next = new_node 
  
        #Zurück zum vorherigen Knoten des neuen Knotens_Machen Sie es zum Knoten, der vom Knoten angegeben wird
        new_node.prev = prev_node 
  
        #Zurück zum nächsten Knoten des neuen Knotens_Ich habe es zum nächsten Knoten des in Knoten angegebenen Knotens gemacht, aber der vorherige Knoten dieses Knotens wird auch zu einem neuen Knoten gemacht
        if new_node.next is not None: 
            new_node.next.prev = new_node 
  
    #Knoten vom letzten Knoten einfügen
    def append(self, new_data): 
  
        #Knotengenerierung
        new_node = Node(new_data) 
  
        #Keine Definition des nächsten Knotens des neuen Knotens
        new_node.next = None
  
        #Wenn kein Kopfknoten festgelegt ist (leere Liste), legen Sie einen neuen Knoten als Kopfknoten fest
        if self.head is None: 
            new_node.prev = None
            self.head = new_node 
            return 
  
        #Stellen Sie den endgültigen Knoten ein (Vorwärtsscannen)
        last = self.head 
        while(last.next is not None): 
            last = last.next
  
        #Legen Sie einen neuen Knoten als letzten Knoten fest
        last.next = new_node 
  
        # 7.Machen Sie den vorherigen Knoten des neuen Knotens zum letzten Knoten überhaupt
        new_node.prev = last 
  
        return
  
    def delete(self,del_node):

        if self.head == None or del_node == None: 
            return 

        if self.head == del_node: 
            self.head = del_node.next

        if del_node.next != None: 
            del_node.next.prev = del_node.prev 

        if del_node.prev != None: 
            del_node.prev.next = del_node.next

    def printList(self, node): 
  
        print("Bidirektionale Liste: \n") 

        print("Vorwärtsscannen")
        while(node is not None): 
            print(node.data,end="") 
            last = node 
            node = node.next
            if node:
                print(" -> ",end="")
            else:
                print("\n")
  
        print("Reverse Scannen")
        while(last is not None): 
            print(last.data,end="")
            last = last.prev 
            if last:
                print(" -> ",end="")
            else:
                print("\n")
  
if __name__ == '__main__':
    #Generieren Sie eine leere bidirektionale Liste
    # DLL: None
    dll = DoublyLinkedList() 
    # DLL: None -> 6(Kopf/letzte) -> None
    dll.append(6) 
    # DLL: None -> 7(Kopf) -> 6(letzte) -> None 
    dll.push(7) 
    # DLL: None -> 1(Kopf) -> 7 -> 6(letzte) -> None 
    dll.push(1) 
    # DLL: None -> 1(Kopf) -> 7 -> 6 -> 4(letzte) -> None 
    dll.append(4) 
    # DLL: None -> 1(Kopf) -> 7 -> 8 -> 6 -> 4(letzte) -> None 
    dll.insert(dll.head.next, 8) 
    # DLL: None -> 1(Kopf) -> 8 -> 6 -> 4(letzte) -> None 
    dll.delete(dll.head.next) 
    dll.printList(dll.head) 

Verweise

[1] GeeksforGeeks: Doubly Linked List | Set 1 (Introduction and Insertion) [2] GeeksforGeeks: Delete a node in a Doubly Linked List

Recommended Posts

Beispiel für die Antwort auf den Python-Code --2.2 Geben Sie Kth von hinten zurück
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel - 1,8 "0" -Matrix
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Python-Code-Antwortbeispiel --3.1 Drei Stapel
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --1.3 URLify
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel - 2,6-mal
"Buch, um die Programmierfähigkeit zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --1.9 Drehung der Zeichenkette
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code Lösungsbeispiel --1.1 Doppelte Zeichenfolge
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --2.4 Aufteilen der Liste
Beispiel für die Beantwortung von Python-Code-Antworten --2.7 Schnittknoten
Beispiel für eine Python-Codelösung --1.6 Komprimierung von Zeichenketten
Python-Code Lösungsbeispiel --1.7 Matrixrotation
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Python-Code-Antwortbeispiel --1.4 Satzfolge
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Beispiel für eine Python-Codelösung --2.8 Schleifenerkennung
Beispiel für die Antwort auf den Python-Code --1.2 Zählen Sie die Anzahl der gleichen Zeichen
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --- Elemente zwischen 2.3 entfernt
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --2.1 Entfernen Sie doppelte Elemente
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Python-Code-Antwortbeispiel --2.5 Summe zweier in der Liste angezeigter Zahlen
Programmieren, um in der Welt zu kämpfen ~ 5-1
Programmieren, um in der Welt zu kämpfen 5-3
Programmieren, um in der Welt zu kämpfen ~ 5-2
Programmierung für den Kampf in der Welt - Kapitel 4
[Kenchon-Buch zu Python] "Trainieren Sie Ihre Fähigkeiten zur Problemlösung! Algorithmen und Datenstrukturen" Ich habe den veröffentlichten Code in Python umgeschrieben! -Inhaltsverzeichnis-
Ein Beispiel für die Antwort auf die Referenzfrage der Studiensitzung. Mit Python.
[Kenchon-Buch zu Python] -Kapitel 2- "Trainieren Sie Ihre Fähigkeiten zur Problemlösung! Algorithmen und Datenstrukturen" Ich habe den veröffentlichten Code in Python umgeschrieben!
[Kenchon-Buch zu Python] -Kapitel 4- "Trainieren Sie Ihre Fähigkeiten zur Problemlösung! Algorithmen und Datenstrukturen" Ich habe den veröffentlichten Code in Python umgeschrieben!
Ich suchte nach den Fähigkeiten, die erforderlich sind, um Webingenieur bei Python zu werden
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
Python-Programm von "Buch, das schwieriges Programmieren leicht lehrt"
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
Verwendung der Methode __call__ in der Python-Klasse
Ändern Sie das Standardausgabeziel in eine Datei in Python
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Extrahieren Sie den Wert, der einem Wert am nächsten kommt, aus einem Listenelement in Python
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
So überprüfen Sie die Speichergröße einer Variablen in Python
Vom Aufbau einer Python-Umgebung für unerfahrene Personen bis zur Hello-Welt
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Von der Installation von Ansible bis zum Erstellen einer Python-Umgebung in der virtuellen Umgebung von Vagrant
Lesen Sie die Datei in Python mit einem relativen Pfad aus dem Programm
Ein Skript, das 0, 1 an die erste Python-Primzahl zurückgibt
Ändern Sie die aktive Version in Pyenv von Anaconda in einfaches Python
So führen Sie den Übungscode des Buches "Profitable KI mit Python erstellen" in Google Colaboratory aus
Python-Programmierung: Ich habe versucht, mithilfe von BeautifulSoup4 Unternehmensinformationen (Crawlen) von Yahoo Finance in den USA abzurufen
Ich habe versucht, den unter "Abrufen von Bildern von der Flickr-API mit Python" (Teil 2) veröffentlichten Vorlagencode zu überarbeiten.