elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: [1]
1  Programación / Scripting / como insertar estas clases en mi clase listaenlazada de cola y pilas en: 24 Junio 2016, 04:20 am
Código
  1.  
class ListaEnlazada(object):
    " Modela una lista enlazada, compuesta de Nodos. "
 
    def __init__(self):
        """ Crea una lista enlazada vacía. """
        # prim: apuntará al primer nodo -None con la lista vacía
        self.prim = None
        # len: longitud de la lista - 0 con la lista vacía
        self.len = 0

    def __str__(self):
        verLista(self.prim)

    def __len__(self):
        return self.len

    def append(self,x):
        if self.prim==None:
            self.prim=x
        else:
            nodo=self.prim
            while nodo.prox:
               
                nodo=nodo.prox
            nodo.prox=x
        x.prox=None
        self.len+=1

    def insert(self,i,x):
        if i ==self.len:
            self.append(x)
        elif (i==0):
            x.prox=self.prim
            self.prim=x
            self.len+=1
        elif (i<self.len and i>0):
            nodo=self.prim
            for j in range(i-1):
                nodo=nodo.prox
            x.prox=nodo.prox
            nodo.prox=x
            self.len+=1
        else:
            raise ValueError('Insercion en posicion fuera de rango')

    def remove(self,x):
        nodo=self.prim
        notFound=True
        if nodo==x:
            print('Eliminado ',nodo)
            self.prim=nodo.prox
            self.len-=1
            notFound=False
        while nodo and notFound:
            if nodo.prox.dato==x:
                print('Eliminado ',nodo.prox)
                temp=nodo.prox
                nodo.prox=nodo.prox.prox
                del(temp)
                self.len-=1
                notFound=False
        if notFound:
            raise ValueError('Nodo no encontrado')

    def pop(self,i):
       
        if i >self.len or i<=0:
            raise ValueError('Pop en posicion fuera de rango')
            return ''
        if i==1:
            x=self.prim
            d=x.dato
            self.prim=self.prim.prox
            del(x)
            self.len-=1
        else:
            for j in range(1,i):
                if j==1:
                    nodo=self.prim
                else:
                    nodo=nodo.prox

            x=nodo.prox
            d=x.dato
            del(x)
            nodo.prox=nodo.prox.prox
            self.len-=1
        return d
       
    def index(self,x):
        nodo=self.prim
        notFound=True
        i=1
        if nodo.dato==x:
            print('Encontrado ',nodo)
            notFound=False
        while nodo.prox and notFound:
            if nodo.prox.dato==x:
                print('Encontrado ',nodo.prox)
                notFound=False
            nodo=nodo.prox
            i+=1
        if notFound:
            raise ValueError('Nodo no encontrado')
        return i

#Clase Nodo

class Nodo(object):
    def __init__(self, dato=None, prox = None):
        self.dato = dato
        self.prox = prox
    def __str__(self):
        return str(self.dato)
    def __del__(self):
        print('Destruido el objeto',self.dato)

# Funcion ara mostrar la Lista
def verLista(nodo):
    """ Recorre todos los nodos a través de sus enlaces,
        mostrando sus contenidos. """
    nodoInicial=nodo
    # cicla mientras nodo no es None o reciclado
    primera=True
    while nodo and (nodo!=nodoInicial or primera):
        primera=False
        # muestra el dato
        print (nodo)
        # ahora nodo apunta a nodo.prox
        nodo = nodo.prox

lista=ListaEnlazada()
lista.append(Nodo('Membrillos'))
lista.append(Nodo('Peras'))
lista.append(Nodo('Manzanas'))
lista.append(Nodo('Mangos'))
lista.append(Nodo('Bananas'))
lista.append(Nodo('Fresas'))
verLista(lista.prim)
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines