Class: List
Instance Method Summary collapse
- #<<(val) ⇒ Object
- #each ⇒ Object
- #each_sort ⇒ Object
- #empty? ⇒ Boolean
- #for_sort ⇒ Object
-
#initialize ⇒ List
constructor
A new instance of List.
- #insert(pos, *arg) ⇒ Object
- #pop(n = 1) ⇒ Object
- #reverse_each ⇒ Object
- #shift(n = 1) ⇒ Object
- #unshift(val) ⇒ Object
Constructor Details
#initialize ⇒ List
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 |
#each ⇒ Object
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_sort ⇒ Object
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
87 88 89 |
# File 'lib/alu0101042305/list.rb', line 87 def empty? @head == nil end |
#for_sort ⇒ Object
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_each ⇒ Object
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 |