/* Se debe implementar el TAD Grafica que modela mediante puntos una función parcial de enteros positivos en enteros positivos. Se considera un punto (x, y) como una asociación de una coordenada x cuyo valor asociado es la coordenada y. La cantidad máxima de asociaciones, N, que se puede mantener en un momento determinado está acotada por un parámetro definido en el constructor. Por ser una función, no puede haber dos puntos diferentes con la misma coordenada x. Se puede asumir que todos los puntos tienen la misma probabilidad de pertenecer a una gráfica. La especificación de Grafica se encuentra en el Listado 1. */ #include /* Devuelve una grá fica vacia que puede mantener hasta 'N' asociaciones . Precondici ón: N > 0. */ Grafica CrearGrafica ( int N ) ; /* Si en 'g' hay menos de 'N' asociaciones , asigna 'y' como valor asociado a 'x '; en caso contrario la operaci ón no tiene efecto . Precondici ón: x > 0 , y > 0 , Valor (x, g) == -1. */ void Asociar (int x , int y , Grafica & g ) ; /* Si en 'g' existe asociaci ón para 'x ', devuelve el valor asociado a 'x '; en otro caso devuelve -1. Precondici ón: x > 0. */ int Valor (int x , Grafica g ) ; /* Elimina de 'g' la asociaci ón para 'x ', si existe tal asociaci ón←- ; en caso contrario la operaci ón no tiene efecto . Precondici ón: x > 0. */ void Desasociar (int x , Grafica & g ) ; // h(x) = x % N struct rep_grafica{ int cantidad; int tamano; Lista * tabla; //int * elementos; //(nodoLista *)* tabla; } typedef rep_grafica *Grafica; Grafica CrearGrafica ( int N ){ Grafica nuevo = new rep_grafica; nuevo->cantidad=0; nuevo->tamano=N; nuevo->tabla= new Lista[N]; for (int i=0; itabla[i] = NULL; no estaria bien pq estamos asumiendo que lista vacia se representa con NULL nuevo->tabla[i] = CrearLista(); } return nuevo; } int Valor (int x , Grafica g ){ int pos = x % g->tamano; Lista aux = g->tabla[pos]; while (!EsVaciaLista(aux) && Primero(aux).x!=x){ aux=resto(aux); } if EsVaciaLista(aux) { return -1; }else{ return Primero(aux).y; } } void Asociar (int x , int y , Grafica & g){ if (g->cantidad < g->tamano){ int pos = x % g->tamano; Punto pto = {x,y}; Cons (pto , g->tabla[pos]); g->cantidad++; } } void Desasociar (int x , Grafica & g ){ int pos = x % g->tamano; if(ExisteX(x, g->tabla[pos])){ RemoverX(x,g->tabla[pos]); g->cantidad--; } } int main() { printf("Hello World"); return 0; }