Удаление элемента из LinkedList - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь сделать назначение LinkedList на ruby и столкнулся с трудностями при выполнении метода удаления , поэтому я искал в Google и получил код от метода удаления, Что я не могу понять, так это логи c, я не могу понять, как это работает, как работает логи c для ее удаления.

class Node
  attr_accessor :value, :next_node

  def initialize(value, next_node = nil)
      @value = value
    @next_node = next_node
  end
end

class LinkedList
  def add(number)
    new_node = Node.new(number)

    if @head.nil?           

        @head = new_node
          @tail = new_node
      else
          @tail.next_node = new_node
          @tail = new_node
      end
  end

  def get(index)
    #your code here
    node = @head
    while index > 0 && node
      node = node.next_node
      index -= 1
    end
    node.value
  end

  def add_at (index, number)
    if @head.nil?
      @head = Node.new(number)
      @tail = Node.new(number)
    else
        first = @head
        index -= 1
        while index > 0 && first
                first = first.next_node
                index -= 1
        end
        old_next = first.next_node
        first.next_node = Node.new(number)
        first.next_node.next_node = old_next
    end
  end

  def remove (index)
    node = @head
    index -= 1
    while index > 0 && node
      node = node.next_node
      index -= 1
    end
    node.next_node = node.next_node.next_node
  end
end
...