Class: Lista

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/tdd/Lista.rb

Overview

Clase Lista , es una lista doblemente enlazada

Author:

  • Lisseth Vergaray Del Aguila

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLista

Returns a new instance of Lista



12
13
14
15
16
# File 'lib/tdd/Lista.rb', line 12

def initialize()
    @tam = 0
    @cabeza = nil
    @cola = nil
end

Instance Attribute Details

#cabezaNumeric, Pointer

Returns:

  • (Numeric)

    el tamaño de la lista

  • (Pointer)

    el puntero cabeza de lista

  • (Pointer)

    el puntero cola de lista



11
12
13
# File 'lib/tdd/Lista.rb', line 11

def cabeza
  @cabeza
end

#colaNumeric, Pointer

Returns:

  • (Numeric)

    el tamaño de la lista

  • (Pointer)

    el puntero cabeza de lista

  • (Pointer)

    el puntero cola de lista



11
12
13
# File 'lib/tdd/Lista.rb', line 11

def cola
  @cola
end

#tamNumeric, Pointer

Returns:

  • (Numeric)

    el tamaño de la lista

  • (Pointer)

    el puntero cabeza de lista

  • (Pointer)

    el puntero cola de lista



11
12
13
# File 'lib/tdd/Lista.rb', line 11

def tam
  @tam
end

Instance Method Details

#eachObject

Metodo de acceso a acada elemento, Comparable y Enumerable



86
87
88
89
90
91
92
# File 'lib/tdd/Lista.rb', line 86

def each
    aux = @cabeza
    while(aux != nil)
        yield aux[:value]
        aux= aux[:Next_]
    end
end

#extraer_delanteObject

Extraer un elemento por la cabeza

Returns:

  • aux retorna el campo value del nodo



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/tdd/Lista.rb', line 53

def extraer_delante
    if(@tam == 0)
       puts "La Lista está vacía"
    else
       aux = @cabeza
       @cabeza = @cabeza[:Next_]
       @cabeza[:prev] = nil
       @tam = @tam - 1
       return aux[:value]
    end
end

#extraer_detrasObject

Extraer un elemento por la cola



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/tdd/Lista.rb', line 66

def extraer_detras
    if(@tam == 0)
       puts "La Lista está vacía"
    else
       aux = @cola
       @cola = @cola[:prev]
       @cola[:Next_] = nil
       @tam = @tam - 1
       return aux[:value]
    end
end

#insertar_delante(dato) ⇒ Object

Inserta un nodo por la cabeza de la lista

Parameters:

  • dato (Value)

    será el campo value del nodo



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/tdd/Lista.rb', line 19

def insertar_delante(dato)
    dato_ = Nodo.new(dato,nil,nil)
    if (tam == 0) 
        @cola = dato_ 
        @cabeza = dato_
        
    else  
        dato_[:Next_] = @cabeza  #|nil|cabeza/dato|nil
        @cabeza.prev = dato_
        dato_[:prev] = nil
        @cabeza = dato_
        
    end 
    @tam = @tam + 1

end

#insertar_detras(dato) ⇒ Object

Inserta por la cola y aunmenta tamaño de lista

Parameters:

  • dato (Value)

    será el campo value del nodo



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/tdd/Lista.rb', line 37

def insertar_detras(dato)
    dato_ = Nodo.new(dato,nil,nil)
    if (@tam == 0)
        @cabeza = dato_
        @cola = dato_
    else
        dato_[:prev] = @cola
        @cola[:Next_]= dato_
        dato_[:Next_] = nil
        @cola = dato_
    end
   
    @tam = @tam + 1 
end

#to_sObject

Mostrar la lista



78
79
80
81
82
83
84
# File 'lib/tdd/Lista.rb', line 78

def to_s
   aux = @cabeza
   while(aux != nil)
       puts aux.value
       aux = aux.Next_
   end
end