Escriba una función que mueva el último elemento al frente en una lista enlazada simple dada. Por ejemplo, si la lista enlazada dada es 1->2->3->4->5, entonces la función debería cambiar la lista a 5->1->2->3->4.
Algoritmo:
recorrer la lista hasta el último Node. Utilice dos punteros: uno para almacenar la dirección del último Node y el otro para la dirección del penúltimo Node. Después del final del ciclo, realice las siguientes operaciones.
- Hacer penúltimo como último (secLast->next = NULL).
- Establecer el penúltimo como encabezado (last->next = *head_ref).
- Hacer último como cabeza (*head_ref = último).
Python3
# Python3 code to move the last item # to front class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None # Function to add a node # at the beginning of Linked List def push(self, data): new_node = Node(data) new_node.next = self.head self.head = new_node # Function to print nodes in # a given linked list def printList(self): tmp = self.head while tmp is not None: print(tmp.data, end = ", ") tmp = tmp.next print() # Function to bring the last node # to the front def moveToFront(self): tmp = self.head # To maintain the track of # the second last node sec_last = None # To check whether we have not # received the empty list or list # with a single node if not tmp or not tmp.next: return # Iterate till the end to get # the last and second last node while tmp and tmp.next : sec_last = tmp tmp = tmp.next # Point the next of the second # last node to None sec_last.next = None # Make the last node as the # first Node tmp.next = self.head self.head = tmp # Driver Code if __name__ == '__main__': llist = LinkedList() # Swap the 2 nodes llist.push(5) llist.push(4) llist.push(3) llist.push(2) llist.push(1) print ( "Linked List before moving last to front ") llist.printList() llist.moveToFront() print ( "Linked List after moving last to front ") llist.printList()
Producción:
Linked list before moving last to front 1 2 3 4 5 Linked list after removing last to front 5 1 2 3 4
Complejidad de tiempo: O(n) donde n es el número de Nodes en la lista enlazada dada.
Consulte el artículo completo sobre Mover el último elemento al frente de una lista vinculada determinada para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA