3.2 Pilas
description
Transcript of 3.2 Pilas
3.2 PilasLic. En C.C. Ann Margareth Meza Rodríguez
Una pila es un contenedor de objetos que son insertados y eliminados de
acuerdo con el principio de que el último en entrar es el primero en salir.
a1
a2
…
an
También se les denomina
estructuras LIFO (Last In First Out).
Las operaciones básicas en una pila son push y popPush permite insertar un elemento a la pilaPop extrae un elemento de la pila
Crear: se crea la pila vacía (size).
Apilar: se añade un elemento a la pila.(push)
Des apilar: se elimina el elemento frontal de la pila.(pop)
Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)
Vacía: devuelve cierto si la pila está vacía o falso en caso contrario (empty).
Operaciones
OPERACIONES PÚBLICAS
// void push(x) ->Inserta x
// void pop() ->Elimina el último elemento insertado
// Object tope() ->Devuelve el último elemento insertado
// boolean esVacia() ->Devuelve true si vacía, sino false
// void empty() ->Elimina todos los elementos
// ERRORES: cima o des apilar sobre la pila vacía
Algoritmo para checar paréntesisAlgoritmo para checar paréntesis. La expresión se almacena en la cadena S.1. VALIDO = VERDADERO2. i = 13. CONTADOR = 04. MIENTRAS VALIDO AND i <= LONGITUD(S) HACER
5. SI S[i] = '(' ENTONCES6. CONTADOR = CONTADOR + 1
7. SINO8. SI S[i] = ')' ENTONCES
9. CONTADOR = CONTADOR - 110. SI CONTADOR < 0 ENTONCES
11. VALIDO = FALSO12. i = i + 1
13. SI CONTADOR <> 0 ENTONCES14. VALIDO = FALSO
Algoritmo para checar expresiones con paréntesis bien construidas. Se utiliza una pila P. La cadena se almacena en una variable S.1. VALIDO = VERDADERO2. i = 13. MIENTRAS VALIDO AND i <= LONGITUD(S) 4. SI (S[i] = '(') OR (S[i] = '[') OR (S[I] = '{') ENTONCES 5. PUSH(P,S[i]) 6. SINO 7. SI (S[i] = ')') OR SI (S[i] = ']') OR SI (S[i] = '}') ENTONCES
8. SI EMPTY(P) ENTONCES9. VALIDO = FALSO
10. SINO 11. C = POP(P) 12. SI NOT((C='(' AND S[i] = ')')OR(C='[' AND S[i] =']')
OR (C='{' AND S[i]= '}')) ENTONCES 13. VALIDO = FALSO
14. i = i + 115. SI NOT EMPTY(P) ENTONCES
16. VALIDO = FALSO
Representación
'(' '[' '(' '{'4S:
Apuntador de pila Pila
Una pila puede representarse con un registro, uno de los campos es un entero usado como apuntador de pila y el otro campo es un arreglo lineal de elementos de la pila.
S.TOPE = apuntador de pila.S.ITEM[S.TOPE] = elemento de la cima de la pila
Función EMPTY(S:PILA) regresa BOOLEANO1. SI S.TOPE = 0 ENTONCES
2. REGRESA VERDADERO3. SINO
4. REGRESA FALSO
Función POP(S:PILA) regresa CARÁCTER1. X ¬ S.ITEM[S.TOPE]2. S.TOPE ¬ S.TOPE - 13. REGRESA X
NOTA: Se supone una pila de caracteres