Programa de Python para encontrar el medio de una lista enlazada usando un recorrido

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()

Producción:

The middle element is:  2

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
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *