CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
commit 07513afa4ba52ca2b920d2ef1950faf9f7dc201f
parent 9534bae8c62122de2069a64874f09c39a10a3890
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Fri, 21 Jun 2024 16:39:46 -0300

free memory and return `NULL` if resulting list size is 0

Diffstat:
Mbarrio.cpp | 26++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/barrio.cpp b/barrio.cpp
@@ -35,20 +35,26 @@ double Barrio::getDistancia(double x1,double y1,double x2,double y2){ //CONSIGAN
 }
 
 Parada *Barrio::paradaMasCercana(double coordX, double coordY) { //CONSIGNA 2
-    this->paradas->startCursor();
-    Parada * resultado = NULL;
     double distancia;
     double distanciaMinima;
+    Parada *resultado, *aux;
 
-    while(this->paradas->forwardCursor()){
-        Parada *aux = this->paradas->getCursorData();
+    resultado = aux = NULL;
+
+    if(this->paradas->getSize() == 0) {
+        return NULL;
+    }
+
+    this->paradas->startCursor();
+    while(this->paradas->forwardCursor()) {
+        aux = this->paradas->getCursorData();
 
         if(resultado == NULL) {
             resultado = aux;
-            distanciaMinima = getDistancia(coordX,coordY,aux->getCoordX(),aux->getCoordY());
+            distanciaMinima = getDistancia(coordX, coordY, aux->getCoordX(), aux->getCoordY());
         }
         else {
-            distancia = getDistancia(coordX,coordY,aux->getCoordX(),aux->getCoordY());
+            distancia = getDistancia(coordX, coordY, aux->getCoordX(), aux->getCoordY());
 
             if(distancia < distanciaMinima) {
                 resultado = aux;
@@ -80,7 +86,6 @@ List<Parada*> *Barrio::listaDeParadasPorLinea(int linea) { //CONSIGNA 3
     this->paradas->startCursor();
     while(this->paradas->forwardCursor()){
         paradaActual = this->paradas->getCursorData();
-
         listaDeLineas = paradaActual->getLineas();
 
         if(lineaEnParada(linea, listaDeLineas)) {
@@ -88,7 +93,12 @@ List<Parada*> *Barrio::listaDeParadasPorLinea(int linea) { //CONSIGNA 3
         }
     }
 
-    return resultado->getSize() == 0 ? NULL : resultado;
+    if(resultado->getSize() == 0) {
+        delete resultado;
+        return NULL;
+    }
+
+    return resultado;
 }
 
 unsigned int Barrio::getCantidadDeParadasPorLinea(int linea) { //CONSIGNA 4