Tablas hash
Publicado por chinom (1 intervención) el 17/04/2007 12:39:31
Hola buenas, lo primero agradecer la ayuda que podáis prestarme.
Tengo que crear una tabla hash, donde lo que le paso en lugar de ser una cadena, va a ser una estructura de 13 enteros.
Bien os explico, lo que me van a pasar es un entero (Ej. 6561), a raiz de tener este entero, voy a ir descomponiendolo, primero 6 (Si este no existe, lo creo), después 65(donde uno de los campos sera la clave del padre, en este caso 6), aqui lo mismo que antes, sino esta lo creo. Uno de los campos de 6, será id_5(En este caso, ya que el numero es 6561) y contendra la clave donde se encuentra 65. Todos estos pasos sucesivamente hasta que creemos 6561.
Esto seria la funcion de insertar, la de consultar imagino que teniendo la clave del entero, puedo localizarlo y ver si existe o no.
La funcion de borrar seria asi: Ej.6561 compruebo si sus campos id(donde tenemos almacenados las claves de sus hijos) son NULL o tienen valor. De tenerlo vamos borrando todos los hijos hacia abajo(Un ejemplo de hijo seria 65617, cuya clave estaria almacenada en el id-7). Una vez borrado todo hacia abajo, tenemos que ir comprobando si sus padres tienen mas hijos(En este caso 656). De tenerlos borramos el registro de (6561), de no tenerlos borramos el padre tambien. Todo esto sucesivamente hasta que padre sea NULL o padre tenga mas de un hijo.
Espero haberme explicado correctamente. Por favor si me podeis echar una mano. Lo tengo que programar con C++ y la verdad es que no tengo mucha idea.
Saludos.
Tengo que crear una tabla hash, donde lo que le paso en lugar de ser una cadena, va a ser una estructura de 13 enteros.
Bien os explico, lo que me van a pasar es un entero (Ej. 6561), a raiz de tener este entero, voy a ir descomponiendolo, primero 6 (Si este no existe, lo creo), después 65(donde uno de los campos sera la clave del padre, en este caso 6), aqui lo mismo que antes, sino esta lo creo. Uno de los campos de 6, será id_5(En este caso, ya que el numero es 6561) y contendra la clave donde se encuentra 65. Todos estos pasos sucesivamente hasta que creemos 6561.
Esto seria la funcion de insertar, la de consultar imagino que teniendo la clave del entero, puedo localizarlo y ver si existe o no.
La funcion de borrar seria asi: Ej.6561 compruebo si sus campos id(donde tenemos almacenados las claves de sus hijos) son NULL o tienen valor. De tenerlo vamos borrando todos los hijos hacia abajo(Un ejemplo de hijo seria 65617, cuya clave estaria almacenada en el id-7). Una vez borrado todo hacia abajo, tenemos que ir comprobando si sus padres tienen mas hijos(En este caso 656). De tenerlos borramos el registro de (6561), de no tenerlos borramos el padre tambien. Todo esto sucesivamente hasta que padre sea NULL o padre tenga mas de un hijo.
Espero haberme explicado correctamente. Por favor si me podeis echar una mano. Lo tengo que programar con C++ y la verdad es que no tengo mucha idea.
Saludos.
Valora esta pregunta


0