从LinkedList删除项目

时间:2020-03-23 17:27:21

标签: ruby data-structures linked-list backend variable-assignment

我正在尝试在ruby上进行LinkedList分配,并且在执行删除方法时遇到了困难,因此我在google中搜索并从删除方法中获取了代码。 我无法理解的是其背后的逻辑,我无法理解其工作原理,以及删除它的逻辑工作原理。

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

0 个答案:

没有答案
相关问题