Introducción
¿Ya tomaste el Curso Avanzado de Algoritmos: Patrones de Arrays y Strings?
Lista Enlazada
Estructura de datos: Lista Enlazada
Programando listas enlazadas con Java
Cómo Invertir una Lista Enlazada
Odd Even Linked List: análisis del problema
Solución de Odd Even Linked List
Playground: Odd Even Liked List
Programando Odd Even Linked List con C++
Linked List Cycle: análisis del problema
Solución de Linked List Cycle
Playground: Linked List Cycle
Programando Linked List Cycle con Python
Palindrome Linked List: análisis del problema
Solución de Palindrome Linked List
Playground: Palindrome Linked List
Programando Palindrome Linked List con Java
Reorder List: análisis del problema
Solución de Reorder List
Programando Reorder List con JavaScript
Playground: Reorder List Without Repeated Values
Reto: LRU Caché
Ejercicios recomendados de Lista Enlazada
Ejercicios resueltos de Lista Enlazada
Pilas y colas
Estructura de datos: Pilas y Colas
Paréntesis Válido: análisis del problema
Solución de Paréntesis Válido
Playground: Paréntesis Válido
Programando Paréntesis Válido con C++
Ejercicios recomendados de Pilas
Colas de prioridad
Estructura de datos: Colas de Prioridad
K Closest Points to Origin: análisis del problema
Solución de K Closest Points to Origin
Playground: K Closest Points to Origin
Programando K Closest Points to Origin con Python
Reorganize String: análisis del problema
Solución de Reorganize String
Playground: Reorganize String
Programando Reorganize String con Python
Ejercicios recomendados de Colas de prioridad
Ejercicios resueltos de Colas de prioridad
Próximos pasos
Toma el Curso Avanzado de Algoritmos: Grafos y Árboles
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Juan David Castro Gallego
Aportes 8
Preguntas 0
Siguiendo lo que dijo la profe:
.
Mi solución fue si la cola (tail) es igual al Nodo que se esta iterando en el loop detener el ciclo, esta es mi solución en Java .
package org.example.circularloop;
public class LinkedListCircular {
static Node head, tail;
static class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
this.next = null;
}
}
void push (int data) {
Node currentNode = new Node(data);
if (tail == null) {
tail = currentNode;
head = currentNode;
}
currentNode.next = head;
head = currentNode;
tail.next = head;
}
void print () {
Node iteration = head;
while (true) {
System.out.print(iteration.data + " ");
if (hasCycle() && iteration.equals(tail)) {
break;
}
iteration = iteration.next;
}
System.out.println();
}
private boolean hasCycle () {
return tail != null && tail.next != null;
}
public static void main(String[] args) {
LinkedListCircular circular = new LinkedListCircular();
circular.push(1);
circular.push( 2);
circular.push(3);
circular.push(4);
circular.print();
}
}
<code>
Para mi solución cree una variable estática longitud, para saber la cantidad de nodos agregados a la lista enlazada:
class Nodo:
longitud = 0
def __init__(self, x):
self.valor = x
self.siguiente = None
Nodo.longitud += 1
def hasCycle(cabeza: Nodo) -> bool:
actual = cabeza
for i in range (cabeza.longitud):
if (actual.siguiente == None):
return False
actual = actual.siguiente
return True
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?