Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Com o objetivo de alcançar uma abrangência maior e encorajar novas pessoas a c
| [Fila Encadeada Dinâmica][19] | [C/C++](/src/c/FilaEncadeadaDinamica.c) | Java | Python | Go | Ruby | Javascript | Pascal |
| [Grafo][20] | [C/C++](/src/c/Grafos.c) | Java | Python | Go | Ruby | Javascript | Pascal |
| [Lista Circular Ligada][52] | [C/C++](/src/c/ListaCircularLigada.c) | Java | [Python](/src/python/lista_encadeada_circular.py) | Go | Ruby | Javascript | Pascal |
| [Lista Encadeada][22] | C/C++ | Java | [Python](/src/python/lista_encadeada.py) | Go | Ruby | [Javascript](/src/javascript/ListaSimplesmenteEncadeada.js) | Pascal |
| [Lista Encadeada][22] | C/C++ | Java | [Python](/src/python/lista_encadeada.py) | Go | [Ruby](/src/ruby/Lista_encadeada.rb) | [Javascript](/src/javascript/ListaSimplesmenteEncadeada.js) | Pascal |
| [Lista Duplamente Encadeada][23] | [C/C++](/src/c/ListaDuplamenteEncadeada.c) | [Java](/src/java/ListaDuplamenteEncadeada.java) | [Python](/src/python/lista_duplamente_encadeada.py) | Go | Ruby | [Javascript](/src/javascript/ListaDumplamenteEncadeada.js) | Pascal |
| [Lista Ligada Não Ordenada][24] | [C/C++](/src/c/ListaLigadaNaoOrdenada.c) | Java | Python | Go | Ruby | Javascript | Pascal |
| Lista Sequencial Ordenada | [C/C++](/src/c/ListaSequencialOrdenada.c) | Java | [Python](/src/python/lista_sequencial_ordenada.py) | Go | Ruby | Javascript | Pascal |
Expand Down
80 changes: 80 additions & 0 deletions src/ruby/Lista_encadeada.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
class Node
attr_accessor :data, :next
def initialize(data)
@data = data
@next = nil
end
end

class LinkedList
def initialize
@head = nil
end

def append(data)
if @head.nil?
@head = Node.new(data)
else
find_tail.next = Node.new(data)
end
end

def find_tail
current_tail = @head
until current_tail.next.nil?
current_tail = current_tail.next
end
return current_tail
end

def find_before_node(value)
current = @head
until current.next.data == value
current = current.next
end
return current
end

def delete(value)
if @head.data == value
@head = @head.next
else
target = find(value)
before = find_before_node(value)
before.next = target.next
end
end

def find(value)
current = @head
until current.data == value
current = current.next
end
current
end

def insert_after(target, value)
current = find(target)
temp = current.next
current.next = Node.new(value)
current.next.next = temp
end

def print_list
current = @head
puts "List: "
until current.nil?
print "#{current.data} "
current = current.next
end
end
end

list = LinkedList.new
list.append(10)
list.append(20)
list.append(30)
list.insert_after(20, 22)
list.print_list
list.delete(30)
list.print_list