class Nodo: def __init__(self, dato): self.dato = dato self.liga = None class ListaEnlasada: def __init__(self): self.primerN = None self.ultimoN = None self.promedio=0 self.l=0 self.m=False self.yo=0 def buscarborrar(self): k = int(input("ingrese el dato para eliminar ")) p = self.primerN sinom = 0 while (p != None): if (p.dato == k): listasE22.borrarlista(k) p = p.liga sinom = 1 else: p = p.liga if sinom == 0: print(" el dato no esta") def borrarlista(self, info): x = self.primerN y = info while (x != None): if (x.dato == y): self.desconectar(x,self.anterior(x)) return x else: x = x.liga def anterior(self, x): p = self.primerN y = None while (p != x): y = p p = p.liga return y def ultimoNone(self): ultimo_nodo=self.primerN while(ultimo_nodo.liga != None): ultimo_nodo = ultimo_nodo.liga return ultimo_nodo def insertar(self, nuevo_nodo): if self.primerN: ultimo_nodo = self.primerN while ultimo_nodo.liga != None: ultimo_nodo = ultimo_nodo.liga ultimo_nodo.liga = nuevo_nodo else: self.primerN = nuevo_nodo def mostrar_lista(self): temp_nodo = self.primerN while temp_nodo != None: print(temp_nodo.dato, end='->') temp_nodo = temp_nodo.liga print('Null') def desconectar(self,x,y): self.ultimoN=self.ultimoNone() if(x!=self.primerN): y.liga=x.liga if x==self.ultimoN: self.ultimoN=y else: self.primerN=self.primerN.liga if self.primerN==None: self.ultimoN=None def conectar(self,x,y): self.ultimoN=self.ultimoNone() if(y != None): x.liga=y.liga y.liga=x if(y==self.ultimoN): self.ultimoN=x else: x.liga=self.primerN if(self.primerN==None): self.ultimoN=x self.primerN=x def ordenarascedente(self): self.ultimoN=self.ultimoNone() p=self.primerN ap=None while(p!= self.ultimoN): menor=p a_menor=ap q=p.liga aq=p while(q!=None): if(q.dato < menor.dato): menor=q a_menor=aq aq=q q=q.liga if(menor.dato==p.dato): ap=p p=p.liga else: self.desconectar(menor,a_menor) self.conectar(menor,ap) ap=menor def menu(self): opcion=1 while opcion != 4: print("Bienvenido") print("ingrese 1 agregar") print("ingrese 2 para numero mayor y promedio") print("ingrese 3 borrar") opcion=int(input("ingrese 4 para salir del programa ")) if opcion==1: self.m=True a=int(input("ingrese el dato ")) self.l=self.l+1 self.promedio=self.promedio+a promedio2=self.promedio/self.l self.insertar(Nodo(a)) self.ordenarascedente() self.mostrar_lista() if opcion==2: if self.m==True: r=self.ultimoNone() print ("el numero mayor es: ",r.dato) print ("el promedio es: ", promedio2) else: print ("debes de ingresar un dato para utilizar esta opcion") if opcion==3: listasE22.buscarborrar() self.mostrar_lista() if opcion==4: print("menu finalizado") if (opcion<1 or opcion>4): print("opcion no valida") ##programa principal listasE22=ListaEnlasada() listasE22.menu()