Está en la página 1de 12

Ao de lA IntegrAcIn Nacional y el Reconocimiento de nuestrA dIversIdAd Universidad Nacional del Santa

Escuela Acadmica Profesional de Sistemas e Informtica Asignatura:

ESTRUCTURA DE DATOS
Integrantes:

Pinedo Flores Liseyka. VALLADARES VEGA JAMES BOTTGER ALOR PRISCILLA. Diaz Torres Manuel.

2012

APLICACIN DE PILAS
1. Algoritmo de transformacin de una expresin infija a una expresin postfija. INICIO Leer nt // numero de trminos Cont = 0 Topex = 0 Tope = 1 Mientras cont < nt hacer Leer X // elemento hacer ingresado EXIN [cont] = X Cont = cont + 1 Fin_Mientras EXIN *nt+ = ) PILA *tope+ = ( Tope = tope + 1 Cont = 0 Mientras cont <= nt hacer Variable = EXIN [cont] Si (Variable = ^ o Variable = / o Variable = * o Variable = + o Variable = - ) entonces Mientras ( PILA [tope - 1] >= Variable ) hacer Variableextraer = PILA [tope - 1] EXPO [topex] = Variableextraer tope = tope 1 topex = topex + 1 Fin_Mientras Si PILA [tope - 1]) < Variable entonces PILA [tope] = Variable tope = tope + 1 Fin_Si Fin_Si Si Variable = ( entonces PILA [tope] = Variable tope = tope + 1 Fin_Si Si Variable = ) entonces j = tope 1 Mientras PILA *j+ <> ( hacer Si ( tope > 0 ) entonces Variableextraer = PILA [tope - 1] tope = tope 1

EXPO [topex] = variableextraer Fin_Si j=j1 Topex = topex + 1 Fin_Mientras Variableextraer = PILA [tope - 1] Tope = tope - 1 Caso contrario EXPO [topex] = Variable Topex = topex + 1 Fin_Si Cont = cont + 1 Fin_Mientras K=0 Mientras k < topex hacer Imprimir EXPO *k+ K=k+1 Fin_Mientras FIN

2. Algoritmo de la expresin postfija. INICIO Leer nt // numero de trminos indice = -1 cont = 0 Mientras ( cont < nt ) hacer Leer X // elemento hacer ingresado EXIN [cont] = X Cont = cont + 1 Fin_Mientras EXIN *nt+ = ) cont = 0 Mientras EXPO *cont+ <> ) hacer Si ( EXPO *cont+ <> + y EXPO *cont+ <> - y EXPO *cont+ <> * y EXPO *cont+ <> / y EXPO *cont+ <> ^ ) entonces ndice = ndice + 1 PILA [indice] = EXPO [cont] Caso contario a = PILA [indice] b = PILA [indice - 1] Fin_Si Si EXPO *cont+ = + entonces

ndice = ndice - 1 PILA [indice] = b + a Fin_Si Si EXPO *cont+ = * entonces ndice = ndice - 1 PILA [indice] = b * a Fin_Si Si EXPO *cont+ = - entonces ndice = ndice - 1 PILA [indice] = b - a Fin_Si Si EXPO *cont+ = / entonces ndice = ndice - 1 PILA [indice] = b / a Fin_Si Si EXPO *cont+ = ^ entonces ndice = ndice - 1 PILA [indice] = b ^ a Fin_Si Cont = cont + 1 Fin_Mientras VALOR = PILA [indice] Imprimir VALOR FIN

3. Cierto nmero de usuarios n, envan simultneamente un documento a la impresora comn, la cual debe determinar su orden de impresin. Las longitudes los documentos enviados son: i1.in. Siendo la longitud del documento enviado por el usuario (la numeracin de los usuarios es arbitraria). Suponiendo que el tiempo que se tarda en imprimir un documento es proporcional a su longitud. Escribir el algoritmo que indique el orden ptimo en que se deben imprimir de manera que se minimice el tiempo medio de espera de cada usuario. El tiempo de espera del usuario i-esimo vendr dado por el orden que haya establecido al impresora para su documentacin. Si su documento es el j-esimo en imprimirse, su tiempo de espera ser la suma de los tiempos de impresin de los dos j primeros documentos segn ese orden (se incluye el suyo en la suma). Los usuarios deben estar enterados del tiempo que los tomara esperar. INICIO Leer n // numero de trminos Leer L // Longitud del Documento tiempo = 0 Frente = 0

Final = 0 ( Tiempo de impresin aproximado 30s = 0.5 m por hoja ) Si [ ( final = n ) y ( frente =1 ) ] o [ ( final + 1= frente ) ] entonces Escribir Lista de Impresin Llena Caso contrario Si Final = n Final = 1 Caso contrario Final = Final + 1 Fin _ Si Cola L[final] = L x 0.5 tiempo = tiempo + cola L[final] Imprimir tiempo de impresin: te Si Frente = 0 Frente = 1 Fin_ Si Fin_Si Si ( tiempo = t ) ( t: Tiempo transcurrido en verlo ) entonces Si Frente = 0 Escribir Lista de impresin vaca Caso contrario Cola *frente+ = Si Frente = Final Frente = 0 Final = 0 Caso contrario Si Frente = Final Frente = 0 Final = 0 Caso contrario Si Frente = n Frente = 1 Caso contrario Frente = Frente + 1 Fin_Si Fin_Si Fin_Si Fin_Si Fin_Si FIN

4. Dados los caracteres (), {}, [], y una cadena s, a esta balanceada si tiene alguno de estos formatos, s = , ( String nulo); s = (T); s = [T]; s = {T}; s = UT en donde T y U son cadenas balanceadas (en otras palabras, para cada parntesis, llave o corchete abierto existe un carcter de cierre correspondiente). Ejemplo s = { [ (c - d) 2+ + 1 }. Escribir el algoritmo (Pseudo cdigo) que use una PILA para ver si una cadena es balanceada. INICIO tope = 0 i=0 prece = 4 t = tamao de cadena ele [ i ] = /* lee carcter de la cadena ingresada */ Mientras ( i <= t ) Si ele * i + = , Si precedencia <= prece Tope = tope + 1 Pila *tope+ = , Prece = precedencia Caso contrario Pila No Balanceada I=t+1 Fin_si Fin_si Si ele * i + = * Si precedencia <= prece Tope = tope + 1 Pila *tope+ = * Prece = precedencia Caso contrario Pila No Balanceada I=t+1 Fin_si Fin_si Si ele * i + = ( Si precedencia <= prece Tope = tope + 1 Pila *tope+ = ) Prece = precedencia Caso contrario Pila No Balanceada I=t+1 Fin_si Fin_si

Si ele * i + = - Si pila *tope+ = , Tope = tope + 1 Pila *tope+ = - Sacar 2 ltimos elementos de pila Tope = tope - 2 Prece = 4 Caso contrario Pila No Balanceada I=t+1 Fin_si Fin_si Si ele * i + = + Si pila *tope+ = * Tope = tope + 1 Pila *tope+ = + Sacar 2 ltimos elementos de pila Tope = tope - 2 Prece = 4 Caso contrario Pila No Balanceada I=t+1 Fin_si Fin_si Si ele * i + = ) Si pila *tope+ = ( tope = tope + 1 pila *tope+ = ) Sacar 2 ltimos elementos de pila tope = tope - 2 prece = 4 Caso contrario Pila No Balanceada I=t+1 Fin_si Fin_si I=i+1 Fin_mientras Precedencia : Si ele * i + = , Precedencia = 3 Fin_si Si ele * i + = * Precedencia = 2

Fin_si Si ele * i + = ( Precedencia = 1 Fin_si Fin_Precedencia FIN

5. Escribir el algoritmo (Pseudo cdigo) que maneje tres PILAS de datos (A, B, C) en un soso arreglo implementada como lista enlazada. Las pilas pueden decrecer o crecer en cada momento, pero el tamao del arreglo no variara. Si al pila necesita ms espacio solo tiene que tomarlo del arreglo que tiene 15 lugares en funcin a su lista de disponibles, si las 3 pilas completan los 15 lugares entonces se manda un mensaje de pial llena. Al ingresar un dato se deber leer adems el nombre de pial donde se desea colocarla. Contemplar la posibilidad de eliminar un dato de cualquier pila, lo que provoca incrementar la lista de disponibles. topea = 0 topeB = 0 topeC = 0 dispo = 1 aA = 0 aB = 0 aC = 0 Ingresar: INICIO Leer dato Si ( longa + longB + longC = 0 ) entonces Pila Llena Caso contrario En que pila ingresar Si (dato va en pila A) entonces topeA = dispo pila [ topeA ] = dato dispo = sgte [ topeA ] ant [ topeA ] = aA sgte [ aA ] = topeA aA = topeA fin_si Si ( dato va en pila B ) entonces topeB = dispo pila [ topeB ] = dato dispo = sgte [ topeB ] ant [ topeB ] = aB sgte [ aB ] = topeB aB = topeB fin_si

Si ( dato va en pila C ) entonces topeC = dispo pila [ topeC ] = dato dispo = sgte [ topeC ] ant [ topeC ] = aC sgte [ aC ] = topeC aC = topeC fin_si fin_si FIN Eliminar: INICIO en que pila desea eliminar Si pila A Si topea = 0 Pila A vaca Caso contrario pila * topeA + = sgte [ topeA ] = dispo dispo = topeA topeA = ant [ topeA ] fin_si fin_si Si pila B Si topeB = 0 entonces Pila B vaca Caso contrario pila * topeB + = sgte [ topeB ] = dispo dispo = topeB topeB = ant [ topeB ] fin_si fin_si Si pila A Si topeC = 0 Pila C vaca Caso contrario pila [ topeC + = sgte [ topeC ] = dispo dispo = topeC topeC = ant [ topeC ] fin_si fin_si FIN

6. En al SUNAT se considera una cola frente a una ventanilla en al cual si un usuario al llegar a su momento de atencin no puede ser atendido ()porque se olvido un documento de fcil subsanacin), se le reintegra a una cola en ventanilla especial en la posicin N 5 si solo se olvido la copia de su DNI o en la posicin N 10, si acaso hay ms de 10 personas y se olvido llenar su formulario de impuestos, o al final de la misma, en caso contrario. Se pide disear un procedimiento de MESAPARTES (lo que debe suceder cuando un cliente es atendido), ESPECIAL (vuelta a la cola en ventanilla especial) y otro de ENTRADA (inicial) en cola. Todo ello con vistas a que al reingreso sea sencillo, para lo que se sugiere controlar el N de personas en la cola, y en su caso, un puntero al elemento adecuado de la cola para ejecutar el reingreso. Efectu la prueba de escritorio correspondiente. PTRA = 0 PTRB = 0 INICIO Leer Nombre Si Nombre tiene DNI entonces Si nombre lleno formulario entonces PTRA = PTRA + 1 Llamar MESAPARTE ( PTRA, Nombre, PTRB ) PTRB = PTRB - 1 Caso contrario PTRB = PTRB - 1 Llamar especial [ ( PTRB ).Nombre ] Fin_si Caso contrario Si nombre lleno formulario entonces Llamar ESPECIA D Caso contrario PTRB = PTRB + 1 Cola ( PTRB ) = Nombre Fin_si Fin_si FIN INICIO MESAPARTES ( PTR ) NOMBRE) PTRB ) ColaA ( PTR ) = Nombre Atender Cola ( 1 ) Desde i = 1 hasta ( PTR - 1 ) hacer ColaA ( i ) = ColaA ( i + 1 ) Fin_desde INICIO ESPECIAL D ( PTR ) NOMBRE) Desde j = 6 hasta PTR hacer ColaB ( i ) = ColaB ( i 1 ) Fin_Desde

ColaB ( 5 ) = Nombre FIN

7. Se tiene la siguiente frmula:

Escriba su forme infija, postfija y prefija correspondiente. Infija: X=(a+(b^2c)^(1/2))/(d^(1/3)e/f) Prefija: X = [ a+ [ [^b2] c ] ^ [/12] ] / [ d ^ [/13] - [/ef] ] X = [ a + [-^b2c] ^ [/12] ] / [ [^d/13] - [/ef] ] X = [ a + [^-^b2c/12] ] / [-^d/13/ef] X = [+a^-^b2c/12] / [-^d/13/ef] X = /+a^-^b2c/12-^d/13/ef Posfija: X = [ a + [ [b2^] c ] ^ [12/] ] / [ d ^ [13/] - [ef/] ] X = [ a + [b2^c-] ^ [12/] ] / [ [d13/^] - [ef/] ] X = [ a + [b2^c-12/^] ] / [d13/^ef/-] X = [ab2^c-12/^+] / [d13/^ef/-] X = ab2^c-12/^+d13/^ef/-/

8. Se tiene una pila con los 10 primeros nmeros naturales, y una cola con 10 siguientes, escriba el algoritmo en Pseudo cdigo que utilizando las operaciones bsicas para una de estas estructuras permite obtener la sumatoria del producto de sus datos, atendiendo la regla LIFO para la pila y FIFO para la cola. Procedimiento_Meter _PilaA Tope = 0 Si TopeA = 10 entonces Escribir Pila Llena Caso Contrario PilaA [TopeA] = TopeA TopeA = TopeA + 1 Fin_Si Fin_procedimiento Procedimiento_Meter_ColaA FrenteA = 0 Final = 0

Si Final = 10 entonces Escribir Cola Llena Caso Contrario FrenteA = FrenteA +1 N = FrenteA + 10 ColaA [ FrenteA ] = N Si FrenteA = 0 entonces FrenteA = 1 Fin_Si Fin_Si Fin_Procedimiento Procedimiento_Meter_PilaB TopeB = 0 Si TopeB = 10 entonces Escribir Cola Llena Caso Contrario Desde TopeB = TopeB hasta 10 TopeA = TopeB + 1 PilaB [ TopeB ] = PilaA [ TopeB ] * ColaA [ FrenteA ] FrenteA = FrenteA 1 Fin_Desde Fin_Si Fin_Procedimiento INICIAR S=0 Desde i = 1 hasta 10 hacer Llamar meter PilaA Fin_Desde Desde i = 1 hasta 10 hacer Llamar Meter ColaA Fin_Desde Desde i = 1 hasta 10 hacer S = S + PilaB [i] Fin_Desde Escribir S FIN

También podría gustarte