Descripción Asunto:
Dada una lista, devuelva el primer nodo en el comienzo del anillo de la cadena. Si la cadena acíclica, se devuelve NULL. (Espacio adicional NA)
solución:
algoritmo de Floyd
1. Averiguar si existe una lista de los anillos de dedo de velocidad.
2. Uso encuentro Encontrado identificar anillo de entrada nodos Paso.1.
Paso.2 prueba que voy a robar leetcode en el mapa para la solución del problema
Código de CA:
clase de soluciones { público : NodoLista * fisrtM (NodoLista * cabeza) { NodoLista * lento; NodoLista * más rápido; lentos = más rápidas = cabeza; mientras que (= más rápido! NULL) { ralentizar = lento> siguiente; si (rápido-> siguiente == NULL) de retorno NULL; más rápido = más rápido-> next-> siguiente; si (== lento más rápido) volver lenta; } regresoNULO; } NodoLista * detectCycle (NodoLista * cabeza) { si (la cabeza == NULL) de retorno NULL; NodoLista * fm = fisrtM (cabeza); si (fm == NULL) de retorno NULL; NodoLista * ans = cabeza; mientras que (ans =! fm) { ans = Respuesta-> siguiente; fm = fm-> siguiente; } Devolver ans; } };