Registro de preguntas de Likou --- Utilice Python para implementar operaciones básicas de listas vinculadas


Prefacio

Cómo usar Python para implementar las operaciones básicas de listas vinculadas, incluida la definición de nodos, la definición de listas vinculadas, encontrar la longitud de la lista vinculada, si la lista vinculada está vacía y una serie de funciones


提示:以下是本篇文章正文内容,下面案例可供参考

1. Utilice Python para implementar operaciones básicas de listas vinculadas.

Los nodos de la lista vinculada deben contener un valor y una dirección que apunte al siguiente elemento.

1. La definición de nodos se implementa mediante clases:

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

Dado que todo en Python es un objeto, las variables son en realidad referencias a objetos, lo que equivale a guardar la dirección del objeto.

1. La definición de lista enlazada se implementa mediante clases:

La definición de lista enlazada es la siguiente, que también se implementa mediante clases:

class Single_LinkList():
    def __init__(self,node = None):
        self.head = node

Se generará automáticamente una lista enlazada vacía durante la inicialización, con el encabezado apuntando a Ninguno.

3. Determine si se trata de una implementación de función vacía:

    def is_empty(self):
        """链表是否为空"""
        if self.head == None:
            return True
        else:
            return False

4. Implementación de la función de longitud de la lista vinculada:

    def length(self):
        """链表长度"""
        len = 0
        cur = self.head
        while cur != None:
            len = len + 1
            cur = cur.next
        return len

5. Implementación de la función transversal de lista vinculada:

    def travel(self):
        """遍历链表"""
        cur =  self.head
        while cur != None:
            print(cur.elem)
            cur = cur.next

6. Implementación de la función de interpolación de cabezales:

    def add(self,item):
        """链表头部进行添加元素"""
        node = Node(item)
        node.next = self.head
        self.head = node

7. Implementación de la función de interpolación de cola:

    def append(self,item):
        """链表尾部进行添加元素"""
        node = Node(item)
        cur = self.head
        if self.is_empty():
            self.head = node
        else:
            while cur.next != None:
                cur = cur.next
            cur.next = node
            node.next = None

8. Inserte la implementación de la función de valor en la posición especificada en la lista vinculada:

    def insert(self,pos,item):
        """
        在指定位置上添加元素
        :param pos: 从0开始
        :param item:
        :return:
        """
        node = Node(item)
        count = 0
        cur = self.head
        while cur != None:
            if count == pos - 1:
                node.next = cur.next
                cur.next = node
                break
            cur = cur.next
            count = count + 1

9. Eliminar una implementación de función de cierto valor:

    def remove(self,item):
        """删除某一个节点"""
        cur = self.head
        count = 0
        if self.is_empty():
            print("删除失败")
        elif self.head.elem == item:
            self.head = self.head.next
        else:
            while cur.next != None:
                if cur.next.elem == item:
                    cur.next = cur.next.next
                    break
                cur = cur.next

10 Compruebe si existe una implementación de función en un nodo:

    def search(self,item):
        """查看某个节点是否存在"""
        cur = self.head
        while cur != None:
            if cur.elem == item:
                return True
            cur = cur.next
        return False

El código completo es el siguiente:

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

class Single_LinkList():
    def __init__(self,node = None):
        self.head = node
    def is_empty(self):
        """链表是否为空"""
        if self.head == None:
            return True
        else:
            return False
    def length(self):
        """链表长度"""
        len = 0
        cur = self.head
        while cur != None:
            len = len + 1
            cur = cur.next
        return len
    def travel(self):
        """遍历链表"""
        cur =  self.head
        while cur != None:
            print(cur.elem)
            cur = cur.next
    def add(self,item):
        """链表头部进行添加元素"""
        node = Node(item)
        node.next = self.head
        self.head = node
    def append(self,item):
        """链表尾部进行添加元素"""
        node = Node(item)
        cur = self.head
        if self.is_empty():
            self.head = node
        else:
            while cur.next != None:
                cur = cur.next
            cur.next = node
            node.next = None
    def insert(self,pos,item):
        """
        在指定位置上添加元素
        :param pos:0开始
        :param item:
        :return:
        """
        node = Node(item)
        count = 0
        cur = self.head
        while cur != None:
            if count == pos - 1:
                node.next = cur.next
                cur.next = node
                break
            cur = cur.next
            count = count + 1
    def remove(self,item):
        """删除某一个节点"""
        cur = self.head
        count = 0
        if self.is_empty():
            print("删除失败")
        elif self.head.elem == item:
            self.head = self.head.next
        else:
            while cur.next != None:
                if cur.next.elem == item:
                    cur.next = cur.next.next
                    break
                cur = cur.next
    def search(self,item):
        """查看某个节点是否存在"""
        cur = self.head
        while cur != None:
            if cur.elem == item:
                return True
            cur = cur.next
        return False

El código de prueba es el siguiente:

if __name__ == "__main__":
    Linklist = Single_LinkList()
    print(Linklist.is_empty())
    print(Linklist.length())
    print(Linklist.append(1))
    print(Linklist.is_empty())
    print(Linklist.length())
    print(Linklist.append(2))
    print(Linklist.append(3))
    print(Linklist.append(4))
    print(Linklist.append(5))
    Linklist.add(8)
    Linklist.insert(1,10)
    Linklist.remove(8)
    # Linklist.remove(8)
    Linklist.travel()
    print(Linklist.search(1))

El resultado es el siguiente:
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_47250738/article/details/132000307
Recomendado
Clasificación