Ejercicio 1 IV (snoc)

Ejercicio 1 IV (snoc)

de Nicolas Brignoni Dardano -
Número de respuestas: 2

Buenas, una consulta, yo se que en la consigna del ejercicio 1 pide explícitamente que los subprogramas sean implementados de manera iterativa, pero no pude evitar pensar SNOC de manera recursiva, creo que es uno de los pocos casos donde parece mas intuitivo, al menos para mi que soy nuevo en la recursión, usar justamente un algoritmo recursivo.

Tal vez patine y no es correcto lo que voy a plantear, pero las forma recursiva de SNOC seria:

void snoc(int x, Lista &l){
  if (l == NULL){
    Lista p = new nodo;
    (*p).elem = x;
    (*p).sig = l; //en este caso es igual que asignar NULL
    l = p;
  }else
    snoc(x, (*l).sig);

Tiene sentido?

Bueno, un saludo.

Nicolas.


En respuesta a Nicolas Brignoni Dardano

Re: Ejercicio 1 IV (snoc)

de Carlos Luna -

Hola Nicolás.

El procedimiento snoc recursivo que escribiste es correcto (notar que la variable p no sería estrictamente necesaria ya que podés usar solo l), aunque si se pide iterativo te sugierimos que lo hagas así.  

Itearativamente, deberías avanzar en la lista hasta el último nodo (usando por ejemplo un puntero llamado iter de tipo Lista) e insertar un nuevo nodo al final con dato x. Tener presente que el caso de la lista vacía deberia considerarse primero y sería la única situación en la cual se modificaría el puntero l, pasado por referencia.

Saludos, Carlos