2do Parcial Julio 2022 - Ejercicio 1 - a-3

2do Parcial Julio 2022 - Ejercicio 1 - a-3

de Gonzalo Javier Diaz Ferreira -
Número de respuestas: 2
Buenas, cómo están?

Tengo una duda sobre la parte del hash que se usa para el stock de productos... según la solución para cuando no está el id dentro de la lista: 

if (lista==NULL){
nodoHash* nuevo = new nodoHash;
nuevo->id = id;
nuevo->precio = precio;
nuevo->unidades = cant;
nuevo->sig = t->tabla[posicion];
t->tabla[posicion] = nuevo;
t->productosDiferentes++;
}

No entiendo a qué se le está asignando el siguiente del nuevo nodo, quedaría asociado al puntero del bucket? (entiendo que es teórico, pero me gustaría comprender mejor la idea). 

Gracias!!

PD: deberían corregir la solución porque figura "t" en vez de "s" (ver parámetro Stock)

Saludos

Gonzalo
En respuesta a Gonzalo Javier Diaz Ferreira

Re: 2do Parcial Julio 2022 - Ejercicio 1 - a-3

de Carlos Luna -

Hola Gonzalo.

Gracias por la corrección de "s" por "t" en el nombre de la variable.

Sobre tu pregunta:

nuevo se inserta al comienzo de la lista t->tabla[posicion]. Por esto, las dos asignaciones involucradas para esto son: 

  • nuevo->sig = t->tabla[posicion]; /* el siguiente de "nuevo" es el comienzo de la lista (puntero al primero, guardado en el arreglo tabla[posicion], que puede ser eventualmente NULL) */
  • t->tabla[posicion] = nuevo; /* se actualiza el inicio de la lista tabla[posicion] con el puntero al nuevo primer elemento */

En el teórico hay un dibujo con la inserción al comienzo en hashing, por si querés verlo.

Saludos, Carlos