Untitled
unknown
plain_text
a year ago
1.8 kB
1
Indexable
Never
#TAD PILA CON OPERACIONES BASICAS COMO APILAR, DESAPILAR, ES_VACIA E IMPRIMIR (PARA CREAR UNA PILA GENERAR UN INSTANCIA) class Pila: """ Representa una pila con operaciones de apilar, desapilar y verificar si está vacía. """ def __init__(self): self.items=[] def apilar(self, x): self.items.append(x) def es_vacia(self): return self.items == [] def desapilar(self): if not self.es_vacia(): return self.items.pop() else: print("La pila está vacía") def imprimir_pila(self): print("Pila:", self.items) #CREO LAS PILAS NECESARIAS PARA EL PROCESO PO = Pila() PP = Pila() PLL = Pila() PC = Pila() #FUNCION GENERICA QUE PROCESA SI ESTA CORRECTO EL ORDEN DE SIGNOS DE #APERTURA Y CLAUSURA def procesarDato(dato, PG, apertura, clausura): flag = True if dato == apertura: PG.apilar(dato) elif dato == clausura: if PG.es_vacia(): flag = False else: PG.desapilar() return flag #APILO DATOS AL AZAR EN UN FOR RECORRIENDO LA CADENA DESDE ATRAS HACIA #ADELANTE cadena = "{[()]}" for c in range(len(cadena)-1,-1,-1): PO.apilar(cadena[c]) #UNA BANDERA PARA NO PROCESAR DATOS INNECESARIAMENTE bandera = True #PROCESO CADA UNO DE LOS CASOS while(not PO.es_vacia() and bandera): datoActual = PO.desapilar() if (datoActual == "(" or datoActual == ")"): bandera = procesarDato(datoActual,PP,"(",")") elif (datoActual == "[" or datoActual == "]"): bandera = procesarDato(datoActual,PC,"[","]") elif (datoActual == "{" or datoActual == "}"): bandera = procesarDato(datoActual,PLL,"{","}") print(bandera)