Pour revenir en arrière :

R308 - Consolidation de la programmation

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

    # Affichage dans le sens lecture
    def printNode(self):
        print(self.data, end= " ")
        if self.next is not None:
            self.next.printNode()

    # Affichage dans le sens inverse
    def printNodeReverse(self):
        if self.next is not None:
            self.next.printNodeReverse()
        print(self.data, end=" ")

class LinkedList:
    def __init__(self):
        self.head = None
    
    def addInHead(self, data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node

    def printListRec(self):
        if self.head is not None:
            self.head.printNode()
        print()

    def printListRecReverse(self):
        if self.head is not None:
            self.head.printNodeReverse()
        print()

    def countNode(self):
        compteur = 0
        courant = self.head
        while courant is not None:
            compteur += 1
            courant = courant.next
        return compteur
    
    def reverseList(self):
        reversed_list = LinkedList()
        current = self.head
        while current is not None:
            reversed_list.addInHead(current.data)
            current = current.next
        return reversed_list
    
myLinkedList = LinkedList()
myNode1 = Node(10)
myNode2 = Node(20)
myNode3 = Node(30)
myNode4 = Node(40)
myLinkedList.head = myNode1
myNode1.next = myNode2
myNode2.next = myNode3
myNode3.next = myNode4

# Les differents test par rapport au code :

#############
# Sujet 3_a #
#############
"""
# 2.a printListRecRev (Afficher dans le sens de lecture)
print("Les éléments dans le sens de lecture sont :")
myLinkedList.printListRec()
print("\\nLes éléments dans le sens inverse sont :")
myLinkedList.printListRecReverse()

# 2.b countNodes (Compter le nombre de Node)
n_node = myLinkedList.countNode()
print(f"\\nActuellement il y a : {n_node} Node")

# 2.c addInHead (Ajout d'un nouveau Head)
myLinkedList.addInHead(5)
print("\\nAprès avoir Ajouté un nouveau Head :")
myLinkedList.printListRec()
n_node = myLinkedList.countNode()
print(f"Il y a : {n_node} Node")

# 2.d reverseList (Lire dans le sens Inverse)
reversed_list = myLinkedList.reverseList()
print("\\nNouvelle liste inversée :")
reversed_list.printListRec()
"""