typedef struct{
char *name;
int nia;
}datos;
struct elemento_t{
datos valor;
struct elemento_t *next;
};
typedef struct elemento_t elemento_type;
typedef struct{
int tamanho;
int num_elementos;
double densidad_deseada;
elemento_type **tabla;
}tabla_type;
el primer typedef define un tipo de datos llamado "datos" que es una estructura que tiene un puntero a char y un entero.
luego define otra estructura llamada elemento_t que adentro contiene una estructura tipo "datos" creada anteriormente y que tiene el nombre valor, y un puntero a la misma estructura.
luego lo que hace es definir a la estructura ultima como un tipo de dato llamado elemento_type.
por ultimo define una estructura como table_type que contiene dos enteros, un double y un apuntador que apunta a apuntadores que apuntan al tipo de dato elemento_type.
AHORA BIEN, MI DUDA VIENE EN EL SIGUIENTE PEDAZO DE CÓDIGO:
tabla_type table;
int i;
table.tamanho=20;
tabla.num_elementos=0;
tabla.densidad_deseada=0.25;
tabla.tabla = (elemento_type **) malloc (sizeof(elemento_type *)*table.tamanho);
for (i=0;i<table.tamanho;i++)
{
tabla.tabla[i]=NULL;
}
¿a que se refiere la expresión "tabla.tabla"?
se que tabla es un puntero que apunta a un puntero que apunta a una estructura de tipo elemento_type
lo que me confunde es el signo de puntuación, según entiendo con el signo de puntuación se entra a los miembros de una estructura.
creo que los ultimos tres tabla esta mal, se refiere al nombre de la estructura que es table.
acá el link de donde saque el código:
http://www.it.uc3m.es/abel/as/MMC/M2/HashTable_es.html
Sí, debería poner table.
Y con respecto al punto, sí, como dices. Accedes a un elemento de la estructura.