3.2 Pilas

10
3.2 Pilas Lic. En C.C. Ann Margareth Meza Rodríguez

description

3.2 Pilas. Lic. 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. a n. También se les denomina estructuras LIFO ( Last In First Out ). …. a 2. a 1. - PowerPoint PPT Presentation

Transcript of 3.2 Pilas

Page 1: 3.2 Pilas

3.2 PilasLic. En C.C. Ann Margareth Meza Rodríguez

Page 2: 3.2 Pilas

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).

Page 3: 3.2 Pilas

Las operaciones básicas en una pila son push y popPush permite insertar un elemento a la pilaPop extrae un elemento de la pila

Page 4: 3.2 Pilas

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

Page 5: 3.2 Pilas

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

Page 6: 3.2 Pilas

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

Page 7: 3.2 Pilas

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

Page 8: 3.2 Pilas

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

Page 9: 3.2 Pilas

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

Page 10: 3.2 Pilas