"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel - 2,6-mal

"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel - 2,6-mal

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 isPalinedrome(head_node):
    reversed_node = reverseAndClone(head_node)
    return isEqual(head_node,reversed_node)

def reverseAndClone(node):
    head_node = None
    while node:
        n = Node(node.data)
        n.next = head_node
        head_node = n
        node = node.next
    
    return head_node

def isEqual(one,two):
    while one and two:
        if one.data != two.data:
            return False
        one = one.next
        two = two.next
    return one == None and two == None

dll_1 = DoublyLinkedList() 

# DLL: None -> 0(Kopf) -> 1 -> 2 -> 1 -> 0(letzte) -> None 
dll_1.append(0)  
dll_1.append(1) 
dll_1.append(2) 
dll_1.append(1) 
dll_1.append(0)  

dll_1.printList(dll_1.head) 

print(isPalinedrome(dll_1.head))

dll_2 = DoublyLinkedList() 

# DLL: None -> 0(Kopf) -> 1 -> 2 -> 1(letzte) -> None 
dll_2.append(0)  
dll_2.append(1) 
dll_2.append(2) 
dll_2.append(1) 

dll_2.printList(dll_2.head) 

print(isPalinedrome(dll_2.head))

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 an erster Stelle
        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

"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.3 URLify
"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
"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
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Python-Code-Antwortbeispiel --1.4 Satzfolge
"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
Beispiel für die Antwort auf den Python-Code --2.2 Geben Sie Kth von hinten zurück
Beispiel für eine Python-Codelösung --1.6 Komprimierung von Zeichenketten
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --1.5 One-Shot-Konvertierung
Python-Code Lösungsbeispiel --1.7 Matrixrotation
"Ein Buch zum Trainieren von Programmierkenntnissen für den Kampf in der Welt" Beispiel für eine Python-Codelösung --2.8 Schleifenerkennung
"Buch, um Programmierkenntnisse zu trainieren, um in der Welt zu kämpfen" Python-Code-Antwortbeispiel --- Elemente zwischen 2.3 entfernt
Beispiel für die Antwort auf den Python-Code --1.2 Zählen Sie die Anzahl der gleichen Zeichen
Programmieren, um in der Welt zu kämpfen ~ 5-1
Programmierung, um in der Welt zu kämpfen ~ 5-5,5-6
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
Ein Beispiel für die Antwort auf die Referenzfrage der Studiensitzung. Mit Python.
[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-
[Kenchon-Buch zu Python] -Kapitel 3- "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 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!
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Mathe-Puzzle zum Trainieren des Gehirns des Programmierers Q01 "Wiederholung in Dezimalzahl"
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
Was für ein Buch ist der meistverkaufte "Python Crash Course" der Welt?
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 6 Verbessern Sie den Python-Code
Ruft die EDINET-Codeliste in Python ab
So zeigen Sie Hello World in Python an
Teil 1 Ich habe ein Beispiel für die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Bei der Konvertierung von CSV in JSON mit Python bin ich auf einen Zeichencode gestoßen
Ich suchte nach den Fähigkeiten, die erforderlich sind, um Webingenieur bei Python zu werden
Verwendung der C-Bibliothek in Python
Ali Buch in Python: Abschnitt 2-3, Dynamische Planung (DP)
Persönliche Notizen zum Dokumentieren von Python-Code in Sphinx
Dynamisches Ersetzen der nächsten Methode in Python
Begrüßen Sie die Welt mit Python mit IntelliJ
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
Tipps zum Schreiben werden in Python kurz abgeflacht
So erhalten Sie die Dateien im Ordner [Python]
Ich möchte den Fortschritt in Python anzeigen!
Konvertieren Sie kubischen Netzcode in Python in WKT
Verwenden Sie tkinter, um den Ausgabecode in Python als "A und vorgeben, B zu sein" zu verschieben
Ich habe Python verwendet, um mich über die Rollenauswahl der 51 "Yachten" in der Welt zu informieren.
Programmieren mit Python
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
So rufen Sie den n-ten größten Wert in Python ab
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
So erhalten Sie den Variablennamen selbst in Python
Fügen Sie der EV3 Micropyhon-Programmierung in VS Code eine automatische Ergänzung hinzu
So ermitteln Sie die Anzahl der Stellen in Python
[Python] Versuchen Sie, die coole Antwort auf das FizzBuzz-Problem zu lesen
Wie Sie das aktuelle Verzeichnis in Python in Blender kennen
Konvertieren Sie das Bild in .zip mit Python in PDF
Ich möchte in Python schreiben! (3) Verwenden Sie Mock