Class: List

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/alu0101042305/list.rb

Instance Method Summary collapse

Constructor Details

#initializeList

Returns a new instance of List.



8
9
10
# File 'lib/alu0101042305/list.rb', line 8

def initialize
  @sz = 0
end

Instance Method Details

#<<(val) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/alu0101042305/list.rb', line 12

def <<(val)
  node = Node.new(val)
  if(@head == nil)
    @head = node
    @tail = node
  else
    node.prev = @tail
    @tail.next = node
    @tail = node
  end
  @sz += 1
  self
end

#eachObject



91
92
93
94
95
96
97
# File 'lib/alu0101042305/list.rb', line 91

def each
  node = @head
  while(node != nil)
    yield node.value
    node = node.next
  end
end

#each_sortObject



121
122
123
124
125
126
127
128
129
130
131
# File 'lib/alu0101042305/list.rb', line 121

def each_sort
  array = Array.new
  self.each do |person|
    sz = array.size
    array.each_with_index do |person2,i|
      array.insert(i,person) if person2 > person and sz == array.size
    end
    array << person if sz == array.size
  end
  array
end

#empty?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/alu0101042305/list.rb', line 87

def empty?
  @head == nil
end

#for_sortObject



107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/alu0101042305/list.rb', line 107

def for_sort
  array = self.to_a
  for i in (0..array.size-2)
    for j in (i+1..array.size-1)
      if(array[i] > array[j])
         aux = array[i]
         array[i] = array[j]
         array[j] = aux
      end
    end
  end
  array
end

#insert(pos, *arg) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/alu0101042305/list.rb', line 39

def insert(pos, *arg)
  node = @head
  pos.times do
    if node != nil
      node = node.next
    end
  end
  if node == @head
    self.unshift arg[0]
    self.insert(1, *arg[1, arg.size - 1])
  else
    arg.each do |item|
      if node == nil
        self << item
      else
        newNode = Node.new(item)
        newNode.prev = node.prev
        node.prev.next = newNode
        newNode.next = node
        node.prev = newNode
      end
    end
  end
  @sz += 1
end

#pop(n = 1) ⇒ Object



65
66
67
68
69
70
71
72
73
74
# File 'lib/alu0101042305/list.rb', line 65

def pop(n = 1)
  n.times do
    if(@tail != nil)
      @tail = @tail.prev
      @tail.next = nil
    end
  end
  @head = nil if @tail == nil
  @sz -= 1
end

#reverse_eachObject



99
100
101
102
103
104
105
# File 'lib/alu0101042305/list.rb', line 99

def reverse_each
  node = @tail
  while(node != nil)
    yield node.value
    node = node.prev
  end
end

#shift(n = 1) ⇒ Object



76
77
78
79
80
81
82
83
84
85
# File 'lib/alu0101042305/list.rb', line 76

def shift(n = 1)
  n.times do
    if @head != nil
      @head = @head.next
      @head.prev = nil
    end
  end
  @tail = nil if @head == nil
  @sz -= 1
end

#unshift(val) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/alu0101042305/list.rb', line 26

def unshift(val)
  node = Node.new(val)
  if(@head == nil)
    @head == node
    @tail == node
  else
    node.next = @head
    @head.prev = node
    @head = node
  end
  @sz -= 1
end