Primer Parcial
Primer 25%
Si tengo el apuntador de entrada a una cola.
ELABORA un ALGORITMO que permita CONSTRUIR una PILA con los elementos de la COLA de tal manera que el último elemento de la PILA(Tope) Sea el último Elemento de la COLA.
Segundo 25%
Solución
En esta primera parte del parcial me hice con mi compañero Juan David Sarrazola Fernadez
Url de los códigos en Python:
Segundo punto: https://pythontutor.com/render.html#code=class%20Nodo%3A%0A%20%20%20%20def%20__init__%28self,%20dato%29%3A%0A%20%20%20%20%20%20%20%20self.dato%20%3D%20dato%0A%20%20%20%20%20%20%20%20self.liga%20%3D%20None%0A%0Aclass%20LSL%3A%0A%20%20%20%20def%20__init__%28self%29%3A%0A%20%20%20%20%20%20%20%20self.primero%20%3D%20None%0A%20%20%20%20%20%20%20%20self.ultimo%20%3D%20None%0A%0A%20%20%20%20def%20insertar%28self,%20dato%29%3A%0A%20%20%20%20%20%20%20%20nuevo_nodo%20%3D%20Nodo%28dato%29%0A%20%20%20%20%20%20%20%20if%20self.primero%20is%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20self.primero%20%3D%20nuevo_nodo%0A%20%20%20%20%20%20%20%20%20%20%20%20self.ultimo%20%3D%20nuevo_nodo%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20self.ultimo.liga%20%3D%20nuevo_nodo%0A%20%20%20%20%20%20%20%20%20%20%20%20self.ultimo%20%3D%20nuevo_nodo%0A%0A%20%20%20%20def%20mostrar%28self%29%3A%0A%20%20%20%20%20%20%20%20nodo_actual%20%3D%20self.primero%0A%20%20%20%20%20%20%20%20while%20nodo_actual%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print%28nodo_actual.dato,%20end%3D'%20'%29%0A%20%20%20%20%20%20%20%20%20%20%20%20nodo_actual%20%3D%20nodo_actual.liga%0A%20%20%20%20%20%20%20%20print%28%29%0A%0Adef%20eliminar_numero%28lista,%20numero%29%3A%0A%20%20%20%20nodo_actual%20%3D%20lista.primero%0A%20%20%20%20nodo_anterior%20%3D%20None%0A%0A%20%20%20%20while%20nodo_actual%3A%0A%20%20%20%20%20%20%20%20if%20nodo_actual.dato%20%3D%3D%20numero%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20nodo_anterior%20is%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Si%20el%20n%C3%BAmero%20est%C3%A1%20al%20principio%20de%20la%20lista%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lista.primero%20%3D%20nodo_actual.liga%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nodo_anterior.liga%20%3D%20nodo_actual.liga%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20nodo_anterior%20%3D%20nodo_actual%0A%0A%20%20%20%20%20%20%20%20nodo_actual%20%3D%20nodo_actual.liga%0A%0A%23%20Crear%20una%20lista%20simplemente%20ligada%20con%20n%C3%BAmeros%20ingresados%20por%20el%20usuario%0Alista%20%3D%20LSL%28%29%0An%20%3D%20int%28input%28%22%C2%BFCu%C3%A1ntos%20n%C3%BAmeros%20desea%20ingresar%3F%20%22%29%29%0A%0Afor%20i%20in%20range%28n%29%3A%0A%20%20%20%20numero%20%3D%20int%28input%28f%22Ingrese%20el%20n%C3%BAmero%20%7Bi%20%2B%201%7D%3A%20%22%29%29%0A%20%20%20%20lista.insertar%28numero%29%0A%0Aprint%28%22%5CnLista%20original%3A%22%29%0Alista.mostrar%28%29%0A%0Anumero_a_eliminar%20%3D%20int%28input%28%22%5CnIngrese%20el%20n%C3%BAmero%20que%20desea%20eliminar%3A%20%22%29%29%0A%0A%23%20Eliminar%20el%20n%C3%BAmero%20ingresado%20por%20el%20usuario%0Aeliminar_numero%28lista,%20numero_a_eliminar%29%0A%0Aprint%28%22%5CnLista%20despu%C3%A9s%20de%20eliminar%20el%20n%C3%BAmero%3A%22%29%0Alista.mostrar%28%29&cumulative=false&curInstr=163&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%226%22,%2210%22,%2215%22,%2225%22,%2215%22,%2230%22,%2215%22,%2215%22%5D&textReferences=false
Quinto punto: https://pythontutor.com/render.html#code=def%20apilar%28pila,%20tope,%20elemento,%20capacidad%29%3A%0A%20%20%20%20if%20tope%20%3C%20capacidad%20-%201%3A%20%0A%20%20%20%20%20%20%20%20tope%20%2B%3D%201%0A%20%20%20%20%20%20%20%20pila%5Btope%5D%20%3D%20elemento%0A%20%20%20%20%20%20%20%20print%28f%22Elemento%20'%7Belemento%7D'%20apilado%20correctamente.%22%29%0A%20%20%20%20%20%20%20%20return%20tope%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20print%28%22La%20pila%20esta%20llena.%20No%20se%20puede%20apilar%20el%20elemento.%22%29%0A%20%20%20%20%20%20%20%20return%20tope%0A%0Adef%20desapilar%28pila,%20tope%29%3A%0A%20%20%20%20if%20tope%20%3E%3D%200%3A%20%0A%20%20%20%20%20%20%20%20elemento%20%3D%20pila%5Btope%5D%0A%20%20%20%20%20%20%20%20pila%5Btope%5D%20%3D%20None%20%0A%20%20%20%20%20%20%20%20tope%20-%3D%201%0A%20%20%20%20%20%20%20%20print%28f%22Elemento%20'%7Belemento%7D'%20desapilado%20correctamente.%22%29%0A%20%20%20%20%20%20%20%20return%20tope%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20print%28%22La%20pila%20esta%20vacia.%20No%20se%20puede%20desapilar.%22%29%0A%20%20%20%20%20%20%20%20return%20tope%0A%0Adef%20mostrar_pila%28pila,%20tope%29%3A%0A%20%20%20%20if%20tope%20%3E%3D%200%3A%20%20%0A%20%20%20%20%20%20%20%20print%28%22Contenido%20de%20la%20pila%3A%22%29%0A%20%20%20%20%20%20%20%20for%20i%20in%20range%28tope,%20-1,%20-1%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print%28pila%5Bi%5D%29%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20print%28%22La%20pila%20esta%20vacia.%22%29%0A%0A%0Acapacidad%20%3D%20int%28input%28%22Ingrese%20la%20capacidad%20maxima%20de%20la%20pila%3A%20%22%29%29%0Apila%20%3D%20%5BNone%5D%20*%20capacidad%20%20%0Atope%20%3D%20-1%20%0A%0Awhile%20True%3A%0A%20%20%20%20print%28%22Opciones%3A%22%29%0A%20%20%20%20print%28%221.%20Apilar%22%29%0A%20%20%20%20print%28%222.%20Desapilar%22%29%0A%20%20%20%20print%28%223.%20Mostrar%22%29%0A%20%20%20%20print%28%224.%20Salir%22%29%0A%20%20%20%20opcion%20%3D%20input%28%22Ingrese%20el%20Numero%20de%20opcion%3A%20%22%29%0A%0A%20%20%20%20if%20opcion%20%3D%3D%20%221%22%3A%0A%20%20%20%20%20%20%20%20if%20tope%20%3C%20capacidad%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20elemento%20%3D%20input%28%22Ingrese%20el%20elemento%20a%20apilar%3A%20%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20tope%20%3D%20apilar%28pila,%20tope,%20elemento,%20capacidad%29%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print%28%22La%20pila%20esta%20llena.%20No%20se%20puede%20apilar%20mas%20elementos.%22%29%0A%20%20%20%20elif%20opcion%20%3D%3D%20%222%22%3A%0A%20%20%20%20%20%20%20%20tope%20%3D%20desapilar%28pila,%20tope%29%0A%20%20%20%20elif%20opcion%20%3D%3D%20%223%22%3A%0A%20%20%20%20%20%20%20%20mostrar_pila%28pila,%20tope%29%0A%20%20%20%20elif%20opcion%20%3D%3D%20%224%22%3A%0A%20%20%20%20%20%20%20%20print%28%22Saliendo%20del%20programa.%22%29%0A%20%20%20%20%20%20%20%20break%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20print%28%22Opcian%20no%20valida.%20Por%20favor,%20elija%20una%20opcian%20valida.%22%29&cumulative=false&curInstr=131&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%223%22,%221%22,%2210%22,%2220%22,%221%22,%2220%22,%221%22,%2230%22,%223%22,%222%22,%223%22%5D&textReferences=false
Documento docs. con los códigos por puntos
Prueba de escritorio punto 2,4 y 3