In [54]:
class ListaSimple:
    # Atributo de la Clase
    top = None
    
    def __init__(self):
        # Inicialización del campo de información y de la referencia
        self.dato = None
        self.sig = None
         
    def es_vacia(self):
        if ListaSimple.top is None:
            return True
        else:
            return False
        
    def insertar_vacia(self, dato):
        if self.es_vacia():
            ListaSimple.top = ListaSimple()
            ListaSimple.dato = dato
            print("El nodo insertado es el primero")
        else:
            print("La lista ya contiene elementos")

    def insertar_inicio(self, dato):
        """
        Inserta el elemento en el inicio de la lista
        """
        if not self.es_vacia():
            tmp = ListaSimple()
            tmp.dato = dato
            tmp.sig = ListaSimple.top
            ListaSimple.top = tmp
        else:
            print("No puede insertarse al final ... lista no contiene nodos")
            
    def insertar_final(self, dato):
        """
        Inserta el elemento al final de la lista
        """
        if not self.es_vacia():
            tmp = ListaSimple()
            tmp.dato = dato
            auxtop = ListaSimple.top
            # Se recorre la lista
            while auxtop.sig is not None:
                auxtop = auxtop.sig
            auxtop.sig = tmp
        else:
            print("No puede insertarse al final ... lista no contiene nodos")
            
    def insertar_entre_nodos(self, refdato, dato):
        # El campo refdato determina el nodo luego del cual debe insertarse
        if not self.es_vacia():
            tmp = ListaSimple()
            tmp.dato = dato
            auxtop = ListaSimple.top
            # Se recorre la lista
            while auxtop.dato is not dato:
                auxtop = auxtop.sig
                # Si se llega al nodo referencia
                if auxtop.dato == refdato:
                    tmp.sig = auxtop.sig
                    tmp.sig = auxtop
        else:
            print("No puede insertarse al final ... lista no contiene nodos")
            
    def presentar(self):
        if self.es_vacia():
            print("No existen nodos en la lista")
        else:
            auxtop = ListaSimple.top
            while auxtop is not None:
                print("[{0}]".format(auxtop.dato), end='->')
                auxtop = auxtop.sig

In [56]:
l = ListaSimple()
l.insertar_vacia(6)
l.insertar_inicio(7)
l.insertar_final(13)
l.presentar()


La lista ya contiene elementos
[7]->[None]->[13]->