Solucion Examen Est Dat Final
-
Upload
jorge-marcillo -
Category
Documents
-
view
9 -
download
1
description
Transcript of Solucion Examen Est Dat Final
-
ESCUELASUPERIORPOLITECNICADELLITORAL
FACULTADDEINGENIERIAENELECTRICIDADYCOMPUTACIONESTRUCTURASDEDATOS
SEGUNDAEVALUACIONIITERMINO20112012
Nombre:________________________________________________Matricula:_______________Paralelo:_______Tema1(15ptos) Dadolasiguientetabladehash,implementadausandolatcnicadehashabierto,comoquedaralatablasisellenaconlatcnicadehashcerrado,usandounafuncinderehashlineal.Considerequelosdatosfueroningresadosenordenalfabtico.
D,E
A,B.C
F,G,H
G
H
D
A
B
C
E
F
Tema2(25ptos)Grafiqueelrbolquecontieneelcdigodehuffmanparalossmbolosyfrecuenciasdelasiguientetabla:
-
Letra Frecuencia CdigoHuffmanS 10 110 I 12 111 E 16 00 P 5 1001 U 9 101 D 3 1000
Espacioenblanco
14 01
Luegocodificarelsiguientemensaje: SISEPUEDE110111011100001100110100100000
P5D3
DP8 U9
DPU17
I12S10
SI22
E16
DPUSI39
EDPUSI69
14
E30
-
Tema3(30ptos)Twittermantieneporcadausuariounalistaconsusmensajesordenadosenformacronolgica,delmsrecientealmsantiguo.Siunusuarioquiereseguiraotro(verlosmensajesquepublica),Twitterledaaccesoalalistademensajesdeelusuarioaseguir.Twitterfuncionadetalformaqueenlacomputadoradelusuario,aparecenlos10ltimosmensajesquefueronpublicadosporlaspersonasalasqueelusuariosigue.TwittermanejalosmensajesconelsiguienteTDA:typedef struct Mensaje{ string texto; time tiempo; } Mensaje; SepidequeustedescribaunafuncinobtenerMensajequerecibaunarreglodelistasdemensajesdetamaoN(dondeNeselnmerodeusuariosalosquesesesigueenTwitter)yqueretorneunheapconlos10ltimosmensajes.Lafunciondebeserptimaenelsentidodequeelrecorridodelaslistasdebedeminimizarse.NOTA:AsumaqueelTDAHeaptienecapacidaddecompararvariablesdetipotime.Heap *obtenerMensaje(List *L[], int n){ Heap *H = heapNew(10, DESC, timeCompare); NodeList **p = malloc(sizeof(NodeList *) * n); int i = 0; inicializar(p, L, n); int j = llenarHeapConDiezPrimeros(H, p, n); mejorarHeap(H, p, n, j); } int llenarHeapConDiezPrimeros (Heap *H, NodeList **p, int n){ int i, j = 0; for(i = 0; i < 10; i++){ if(p[j%n]!= NULL) {
heapEnQueue(H, nodeListGetCont(p[j%n])); p[j%n] = p[j%n]->next; } j++;
} return j%n; } void mejorarHeap((Heap *H, NodeList **p, int n, int j){ while(!todasEstanRevisadas(p, n)){ if(p[j%n]!= NULL && timeCompare(heapGetElement(H, 0), nodeListGetCont(p[j%n])) > 0){ heapDeQueue(H); heapEnQueue(H, nodeListGetCont(p[j%n])); p[j%n] = p[j%n]->next;
}else p[j%n]= NULL;
j ++; } Tema4(30puntos)LosgelogosdelInstitutogeofsicoEcuatorianodeseanimplementarunsistemadesimulacindelaerupcindelvolcn
Tungurahua.Paraellosehadefinidoelsiguientemapadelasciudadesqueestnubicadasenlasquebradasositiospordondepasaralalava,dondeelpuntoTrepresentaelvolcn.
-
Conelobjetivodeconocerelimpactodeunaerupcinenlazona,sehaestimadoenelmapaelporcentajedelavaquepasaraporcadaciudadposiblementeafectada.Adicionalmente,sehaconsideradoque,dependiendodelareadela
ciudadafectada,cadaciudadretendra100toneladasporkilometrocuadrado.Estodisminuiralacantidaddelavaquepodrallegaralassiguientesciudades.
LasuperficieenKm.cuadradosdecadaciudadeslasiguiente:B=10,C=11,D=4,E=15,F=16,G=8,H=12,I=8,J=6,K=10,
L=20,M=10.Enesecaso,sielvolcngenerase10.000toneladasdelava,solo2000(el20%)llegaranalaciudadI,dondeseretendran800toneladas,quedandosolo1200paraafectaralasciudadesaledaasaI(KyJ)
EscribaunafuncincalcularLavaquedadaunaciudadyunacantidadXdelavageneradaporelvolcn,calculelacantidaddelavaquellegaraalaciudad.int calcularLava(Gvertex *vorigen, Gvertex *vdestino, int X){ gVertexVisit(vorigen);a List *Ladj = gVertexGetAdjacents(vorigen); NodeList *p; for(p = listGetHeader(Ladj); p!= NULL; p = p->next){ Gedge *e = nodeListGetCont(p); Gvertex *vd = gEdgeGetDestination(e); if(!gVertexIsVisited(vd)){
double *porcentaje = gEdgeGetExtraInfo(e); X = X * (*porcentaje); double *area = gVertexGetContent(vd);
if(vdestino == vd) return X ;
if(area*100 < X) X = X area*100; else X = 0;
return calcularLava(vd, vdestino, X); }
} }