Dada una lista enlazada individualmente, busque el centro de la lista enlazada. Dada una lista enlazada individualmente, busque el centro de la lista enlazada. Por ejemplo, si la lista enlazada dada es 1->2->3->4->5, entonces la salida debería ser 3.
Método 1: recorrer toda la lista enlazada y contar el no. de Nodes Ahora recorra la lista nuevamente hasta la cuenta/2 y devuelva el Node en la cuenta/2. Método 2: recorrer la lista enlazada usando dos punteros. Mueva un puntero por uno y otro puntero por dos. Cuando el puntero rápido llegue al final, el puntero lento llegará a la mitad de la lista enlazada.
Python3
# Python 3 program to find the middle of a # given linked list # Node class class Node: # Function to initialise the node object def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def push(self, new_data): new_node = Node(new_data) new_node.next = self.head self.head = new_node # Function to get the middle of # the linked list def printMiddle(self): slow_ptr = self.head fast_ptr = self.head if self.head is not None: while (fast_ptr is not None and fast_ptr.next is not None): fast_ptr = fast_ptr.next.next slow_ptr = slow_ptr.next print("The middle element is: ", slow_ptr.data) # Driver code list1 = LinkedList() list1.push(5) list1.push(4) list1.push(2) list1.push(3) list1.push(1) list1.printMiddle()
Método 3: Inicializó la variable temporal como cabeza Inicializó el conteo a cero Tome el ciclo hasta que la cabeza se vuelva Nulo (es decir, el final de la lista) e incremente el Node temporal cuando el conteo sea solo impar, de esta manera la temperatura atravesará hasta el elemento medio y la cabeza lo hará atravesar toda la lista enlazada. Imprime los datos de temp.
Python3
# Python 3 program to find the middle of a # given linked list class Node: def __init__(self, value): self.data = value self.next = None class LinkedList: def __init__(self): self.head = None # create Node and make linked list def push(self, new_data): new_node = Node(new_data) new_node.next = self.head self.head = new_node def printMiddle(self): temp = self.head count = 0 while self.head: # only update when count is odd if (count & 1): temp = temp.next self.head = self.head.next # increment count in each iteration count += 1 print(temp.data) # Driver code llist = LinkedList() llist.push(1) llist.push(20) llist.push(100) llist.push(15) llist.push(35) llist.printMiddle() # code has been contributed by - Yogesh Joshi
100
Publicación traducida automáticamente
Artículo escrito por joshiyogesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA