Создание класса связанного списка и класса узла в Python с помощью общих операций

Я могу помочь вам создать класс связанного списка и класс узла, а также предоставить вам некоторые распространенные операции со связанным списком. Вот пример реализации на Python:

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

class LinkedList:
    def __init__(self):
        self.head = None
    def is_empty(self):
        return self.head is None
    def append(self, data):
        new_node = Node(data)
        if self.is_empty():
            self.head = new_node
        else:
            current = self.head
            while current.next:
                current = current.next
            current.next = new_node
    def prepend(self, data):
        new_node = Node(data)
        if self.is_empty():
            self.head = new_node
        else:
            new_node.next = self.head
            self.head = new_node
    def insert_after(self, prev_node, data):
        if prev_node is None:
            print("Previous node must be in the list.")
            return
        new_node = Node(data)
        new_node.next = prev_node.next
        prev_node.next = new_node
    def delete(self, data):
        if self.is_empty():
            print("The list is empty.")
            return
        if self.head.data == data:
            self.head = self.head.next
            return
        current = self.head
        while current.next and current.next.data != data:
            current = current.next
        if current.next:
            current.next = current.next.next
        else:
            print("Data not found in the list.")
    def search(self, data):
        current = self.head
        while current:
            if current.data == data:
                return True
            current = current.next
        return False
    def size(self):
        count = 0
        current = self.head
        while current:
            count += 1
            current = current.next
        return count

Приведенный выше код определяет класс Node, который представляет один узел в связанном списке. Каждый узел содержит атрибут dataи атрибут next, который указывает на следующий узел в списке.

Класс LinkedListпредставляет сам связанный список. Он имеет такие операции, как appendдля добавления нового узла в конец списка, prependдля добавления нового узла в начало списка, insert_after, чтобы вставить новый узел после заданного узла, delete, чтобы удалить узел с определенным значением данных, search, чтобы проверить, присутствует ли заданное значение данных в list и size, чтобы получить количество узлов в списке.