"Un livre pour former les compétences de programmation pour combattre dans le monde" Exemple de solution de code Python --2.8 Détection de boucle

"Un livre pour former les compétences de programmation pour combattre dans le monde" Exemple de solution de code Python --2.8 Détection de boucle

CHAP2. Liste concaténée

  1. Supprimer les éléments en double
  2. Renvoyez Kth par l'arrière
  3. Supprimer les éléments entre
  4. Liste fractionnée
  5. Somme de deux nombres représentés dans la liste
  6. Commentaire
  7. Intersection des nœuds
  8. Détection de boucle

Exemple de solution de code Python

python



from chap2_function import* 

def FindBeginning(head_node):
    
    slow = head_node
    fast = head_node

    while fast and fast.next:

        slow = slow.next
        fast = fast.next.next
        
        if slow == fast:
            break

    if fast == None or fast.next == None:
        return None

    slow = head_node

    while slow != fast:
        slow = slow.next
        fast = fast.next

    return fast


sll = SinglyLinkedList()

sll.append(1)
sll.append(2)
sll.append(3)
sll.append(4)
sll.append(5)

sll.printList(sll.head)

sll.insertNode(sll.head.next.next.next.next,sll.head.next.next)

print("sll[0]: ", sll.head.data)
print("sll[1]: ",sll.head.next.data)
print("sll[2]: ",sll.head.next.next.data)
print("sll[3]: ",sll.head.next.next.next.data)
print("sll[4]: ",sll.head.next.next.next.next.data)
print("sll[5]: ",sll.head.next.next.next.next.next.data)
print("sll[6]: ",sll.head.next.next.next.next.next.next.data)

print("production: ",FindBeginning(sll.head).data)

Fonctions Python (classe de nœuds, classe de liste bidirectionnelle)

chap2_function.py


#Classe de nœud
class Node: 
  
    #constructeur
    def __init__(self, data): 
        self.data = data 
        self.next = None
        self.prev = None
  
#Classe de liste unidirectionnelle
class SinglyLinkedList: 
  
    #constructeur
    def __init__(self): 
        self.head = None

    def insertNode(self, prev_node, new_node): 
  
        if prev_node is None: 
            print("the given previous node cannot be NULL")
            return 
        
        if new_node is None: 
            print("the given new node cannot be NULL")
            return 
  
        # prev_Fait du nœud suivant du nœud spécifié par nœud un nouveau nœud
        prev_node.next = new_node 
  
  
    #Insérer le nœud du dernier nœud
    def append(self, new_data): 
  
        #Génération de nœuds
        new_node = Node(new_data) 
  
        #Aucune définition du nœud suivant du nouveau nœud
        new_node.next = None
  
        #Si aucun nœud principal n'est défini (liste vide), définissez un nouveau nœud comme nœud principal
        if self.head is None: 
            new_node.prev = None
            self.head = new_node 
            return 
  
        #Définir le nœud final (scan avant)
        last = self.head 
        while(last.next is not None): 
            last = last.next
  
        #Désignez un nouveau nœud comme dernier nœud
        last.next = new_node 
  
        return

    # This function prints contents of linked list 
    # starting from the given node 
    def printList(self, node): 

        last = None
  
        print("Liste unidirectionnelle: \n") 

        print("Balayage avant")
        while(node is not None): 
            print(node.data,end="") 
            last = node 
            node = node.next
            if node:
                print(" -> ",end="")
            else:
                print("\n")
  


#Classe de liste bidirectionnelle
class DoublyLinkedList: 
  
    #constructeur
    def __init__(self): 
        self.head = None
  
    #Insérer un nœud à partir du premier nœud
    def push(self, new_data): 
  
        #Génération de nœuds
        new_node = Node(new_data) 
  
        #Faites du nœud suivant du nouveau nœud celui qui était le nœud principal en premier lieu
        new_node.next = self.head 
  
        #Bien qu'il s'agisse d'un nœud principal au départ, le nœud précédent est remplacé par un nouveau nœud
        if self.head is not None: 
            self.head.prev = new_node 
  
        #Faire du nouveau nœud un nœud principal
        self.head = new_node 
  
    #Insérer un nœud à un point intermédiaire
    def insert(self, prev_node, new_data): 
  
        # prev_Spécifiez s'il faut insérer un nœud après le nœud spécifié par nœud
        #Si aucun, quitte la fonction
        if prev_node is None: 
            print("the given previous node cannot be NULL")
            return 
  
        #Génération de nœuds
        new_node = Node(new_data) 
  
        #Précédente le nœud suivant du nouveau nœud_Faites-en le nœud suivant du nœud spécifié par nœud
        new_node.next = prev_node.next
  
        # prev_Fait du nœud suivant du nœud spécifié par nœud un nouveau nœud
        prev_node.next = new_node 
  
        #Précédent le nœud précédent du nouveau nœud_Faites-en le nœud spécifié par le nœud
        new_node.prev = prev_node 
  
        #Précédente le nœud suivant du nouveau nœud_J'en ai fait le nœud suivant du nœud spécifié dans node, mais le nœud précédent de ce nœud est également transformé en nouveau nœud
        if new_node.next is not None: 
            new_node.next.prev = new_node 

    def insertNode(self, prev_node, new_node): 
  
        # prev_Spécifiez s'il faut insérer un nœud après le nœud spécifié par nœud
        #Si aucun, quitte la fonction
        if prev_node is None: 
            print("the given previous node cannot be NULL")
            return 
        
        if new_node is None: 
            print("the given new node cannot be NULL")
            return 
  
        # prev_Fait du nœud suivant du nœud spécifié par nœud un nouveau nœud
        prev_node.next = new_node 
  
        #Précédent le nœud précédent du nouveau nœud_Faites-en le nœud spécifié par le nœud
        new_node.prev = prev_node 
  
  
    #Insérer le nœud du dernier nœud
    def append(self, new_data): 
  
        #Génération de nœuds
        new_node = Node(new_data) 
  
        #Aucune définition du nœud suivant du nouveau nœud
        new_node.next = None
  
        #Si aucun nœud principal n'est défini (liste vide), définissez un nouveau nœud comme nœud principal
        if self.head is None: 
            new_node.prev = None
            self.head = new_node 
            return 
  
        #Définir le nœud final (scan avant)
        last = self.head 
        while(last.next is not None): 
            last = last.next
  
        #Désignez un nouveau nœud comme dernier nœud
        last.next = new_node 
  
        # 7.Faire du nœud précédent du nouveau nœud le dernier nœud en premier lieu
        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

    # This function prints contents of linked list 
    # starting from the given node 
    def printList(self, node): 

        last = None
  
        print("Liste bidirectionnelle: \n") 

        print("Balayage avant")
        while(node is not None): 
            print(node.data,end="") 
            last = node 
            node = node.next
            if node:
                print(" -> ",end="")
            else:
                print("\n")
  
        print("Balayage inversé")
        while(last is not None): 
            print(last.data,end="")
            last = last.prev 
            if last:
                print(" -> ",end="")
            else:
                print("\n")
  
if __name__ == '__main__':
    #Générer une liste bidirectionnelle vide
    # DLL: None
    dll = DoublyLinkedList() 
    # DLL: None -> 6(tête/dernier) -> None
    dll.append(6) 
    # DLL: None -> 7(tête) -> 6(dernier) -> None 
    dll.push(7) 
    # DLL: None -> 1(tête) -> 7 -> 6(dernier) -> None 
    dll.push(1) 
    # DLL: None -> 1(tête) -> 7 -> 6 -> 4(dernier) -> None 
    dll.append(4) 
    # DLL: None -> 1(tête) -> 7 -> 8 -> 6 -> 4(dernier) -> None 
    dll.insert(dll.head.next, 8) 
    # DLL: None -> 1(tête) -> 8 -> 6 -> 4(dernier) -> None 
    dll.delete(dll.head.next) 


    dll.printList(dll.head) 

    sll = SinglyLinkedList()

    sll.append(1)
    sll.append(8)
    sll.append(6)
    sll.append(4)

    sll.printList(sll.head)

Les références

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

Recommended Posts

"Un livre pour former les compétences de programmation pour combattre dans le monde" Exemple de solution de code Python --2.8 Détection de boucle
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de solution de code Python --1.6 Compression de chaîne de caractères
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de solution de code Python --1.5 Conversion en une seule fois
"Livre pour former des compétences en programmation pour combattre dans le monde" Exemple de solution de code Python - 1.7 Rotation de matrice
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse au code Python - Matrice de 1,8 "0"
"Un livre pour former les compétences de programmation pour combattre dans le monde" Exemple de réponse de code Python --3.1 Trois piles
"Livre pour former les compétences de programmation pour combattre dans le monde" Exemple de réponse de code Python --- Éléments supprimés entre 2.3
"Livre pour former des compétences en programmation pour combattre dans le monde" Exemple de solution de code Python --2.1 Supprimer les éléments en double
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse de code Python --1.3 URLify
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse au code Python - 2,6 fois
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse de code Python --1.9 Rotation de la chaîne de caractères
"Livre pour former des compétences en programmation pour combattre dans le monde" Exemple de solution de code Python --1.1 Chaîne de caractères en double
"Un livre pour former les compétences de programmation pour combattre dans le monde" Exemple de réponse de code Python --2.5 Somme de deux nombres affichés dans la liste
"Livre pour former des compétences en programmation pour combattre dans le monde" Exemple de réponse de code Python --2.4 Fractionnement de la liste
"Un livre pour former les compétences de programmation pour combattre dans le monde" Exemple de réponse de code Python --2.7 nœuds d'intersection
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse de code Python --2.2 Renvoyer Kth par l'arrière
"Un livre pour former des compétences en programmation pour combattre dans le monde" Exemple de réponse au code Python --1.4 Séquence de phrases
"Livre pour former la capacité de programmation à se battre dans le monde" Exemple de réponse de code Python --1.2 Compter le nombre des mêmes caractères
Programmation pour combattre dans le monde ~ 5-1
Programmation pour combattre dans le monde ~ 5-5,5-6
Programmer pour combattre dans le monde 5-3
Programmation pour combattre dans le monde ~ 5-2
Programmation pour combattre dans le monde - Chapitre 4
[Livre Kenchon vers Python] "Entraînez vos compétences en résolution de problèmes! Algorithmes et structures de données" J'ai réécrit le code posté en Python! -table des matières-
J'ai recherché les compétences nécessaires pour devenir ingénieur web avec Python
[Livre Kenchon à Python] -Chapitre 3- "Entraînez vos compétences en résolution de problèmes! Algorithmes et structures de données" J'ai réécrit le code posté en Python!
[Livre Kenchon à Python] -Chapitre 2- "Entraînez vos compétences en résolution de problèmes! Algorithmes et structures de données" J'ai réécrit le code posté en Python!
[Livre Kenchon à Python] -Chapitre 4- "Entraînez vos compétences en résolution de problèmes! Algorithmes et structures de données" J'ai réécrit le code posté en Python!
Utilisez tkinter pour déplacer le code de sortie en tant que "A et prétendant être B" en python
Essayez de résoudre le livre des défis de programmation avec python3
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Programme Python du "Livre qui enseigne facilement la programmation difficile"
Comment utiliser la méthode __call__ dans la classe Python
Changer la destination de sortie standard en un fichier en Python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Exécutez le code de sortie sur le serveur Web local en tant que "A, faisant semblant d'être B" en python
Comment déterminer l'existence d'un élément sélénium en Python
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
Comment vérifier la taille de la mémoire d'une variable en Python
J'ai écrit le code pour écrire le code Brainf * ck en python
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Dans la commande python, python pointe vers python3.8
J'ai écrit un code pour convertir quaternion en angle de graissage de type z-y-x avec Python
[Python] Explique comment utiliser la fonction range avec un exemple concret
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
Quel genre de livre est le "Python Crash Course" le plus vendu au monde?
Code Python pour déterminer les signaux mensuels pour les investissements de force relative
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Un exemple de réponse à la question de référence de la session d'étude. Avec python.
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 6 Améliorer le code Python
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Exécuter l'interpréteur Python dans le script
Comment obtenir stacktrace en python
Essayez un tube de programmation fonctionnel en Python
Obtenir la liste de codes EDINET en Python
Comment afficher Hello World en python