Code python pratique (iii): listes chaînées, piles, files

1, supprimer la liste des noeuds en double

Dans Énuméré liés nœuds de liste en double, supprimez la liste des nœuds en double, le noeud ne conserve pas répété, retourne la liste des pointeurs de tête. Par exemple, la liste 1-> 2-> 3-> 3-> 4-> 4-> 5 1- bilan> 2-> 5.

classe Solution:
     DEF deleteDuplication (auto, PHEAD):
         # le code Write ici Fond d' écran 
        # juge si la liste est vide 
        SI  pas PHEAD:
             retour Aucun 
        pPreNode = Aucun # avant que vous voulez supprimer un nœud de stockage de noeud 
        pNode = PHEAD # définir le noeud début 
        # démarrer le cycle 
        tandis que le • pNode: 
            pNext = pNode.next 
            needDelete = False
             # détermine si deux noeuds adjacents est égale à la valeur de 
            iF pNext et pNext.val == pNode.val: 
                needDelete = Vrai
             # Sinon égal à un arrière, pPreNode pointant vers l'avant du noeud 
            IF  ne needDelete: 
                pPreNode = pNode 
                pNode = pNode.next
             # Si elles sont égales à commencer à enlever 
            l'autre : 
                Val = pNode.val # initialize la valeur du nœud à supprimer 
                pDeleteNode pNode = # définir le nœud à supprimer 
                # égaux pour juger si le nœud actuel à supprimer et val est vide et 
                le tout pDeleteNode et pDeleteNode.val == val: 
                    pNext = pDeleteNode.next
                     del pDeleteNode# Supprimer noeuds 
                    pDeleteNode = pNext # après le nœud de déplacement 
                # Si vous voulez supprimer un nœud contient le nœud de tête initial, il doit être le premier noeud à la position du noeud courant 
                IF  non pPreNode: 
                    PHEAD = pNext
                 # Si vous ne voulez pas supprimer un noeud comprenant un premier noeud, le noeud se connecte 
                le reste : 
                    pPreNode.next = pNext
                 # depuis le noeud traversant les plus récentes 
                • pNode = pNext
         # retourner le noeud tête 
        retour PHEAD
Classe Solution:
     def deleteDuplicates (auto, tête: ListNode) -> ListNode: 
        ans = tête
         en tête =! Aucun:
             si head.next = Aucun! et head.next.val == head.val: 
                head.next = tête. next.next
             autre : 
                tête = head.next
         retour ans
classe Solution:
     DEF deleteDuplication (auto, PHEAD):
         # le code écrire ici Wallpaper 
        IF  ne PHEAD ou  pas pHead.next: # Si la liste est vide ou seulement un élément retour directement 
            retour PHEAD
         IF pHead.val == pHead.next.val: # Si le nœud actuel à la répétition suivante de noeud, continuer à trouver s'il y a double 
            p = pHead.next.next
             le tout p et p.val == pHead.val: # Si le point de jonction p est pas vide et dont la valeur répéter le noeud courant (PHEAD) est égal à 
                p = p.next # p continuer à le prochain quart de travail pour trouver jusqu'à ce qu'aucun double 
            retour self.deleteDuplication (p) # fonction récursive est traitée comme le nœud de tête de la liste chaînée p
        # Si le noeud courant et le noeud suivant ne se répète pas, la fonction récursive est traité comme le noeud de tête de la liste liée pHead.next 
        pHead.next = self.deleteDuplication (pHead.next)
         retour PHEAD

 

Je suppose que tu aimes

Origine www.cnblogs.com/ariel-dreamland/p/12619401.html
conseillé
Classement