class DList

Constants

Node

Attributes

end_[RW]
head[RW]

Public Class Methods

new(content = nil) click to toggle source
# File lib/dsl/doubly_list.rb, line 6
def initialize(content = nil)
    if (content != nil)
        insert_h(content)
else
    @head=nil
@end_=nil
end
end

Public Instance Methods

each(&block) click to toggle source
# File lib/dsl/doubly_list.rb, line 135
def each(&block)
  aux=@head
  nodes = []
  while aux!=nil
    nodes << aux
    aux=aux["next"]
end
nodes.each do |member|
      block.call(member)
    end
  
  
end
extract_all() click to toggle source
# File lib/dsl/doubly_list.rb, line 99
def extract_all
      aux=@head
      while aux!=nil
      aux=extract_head
  end
  end
extract_end() click to toggle source
# File lib/dsl/doubly_list.rb, line 81
def extract_end
if @head==@end_
   nodo=@head
   @head=nil
   @end_=nil
   nodo
else
    nodo=@head
    while nodo["next"]!=@end_
    nodo=nodo["next"]
end
    @end_=nodo
    nodo=nodo["next"]
    @end_["next"]=nil
    nodo
   end 
end
extract_head() click to toggle source
# File lib/dsl/doubly_list.rb, line 66
  def extract_head
if @head==@end_
        nodo=@head
        @head=nil
        @end_=nil
        nodo
else
    nodo=@head
    @head = @head["next"]
    @head["before"]=nil
    nodo
end

end
insert_e(content) click to toggle source
# File lib/dsl/doubly_list.rb, line 56
def insert_e(content)
    if content.class.to_s == "Array"
        for i in 0..content.count-1
        insert_end(content[i])
    end
else
    insert_end(content)
end
end
insert_empty(content) click to toggle source
# File lib/dsl/doubly_list.rb, line 15
def insert_empty(content)
        node = Node.new(content)
        @head = node
        @end_ = node
end
insert_end(content) click to toggle source
# File lib/dsl/doubly_list.rb, line 43
def insert_end(content)
      if @head == nil
          insert_empty(content)
      else
          node =  Node.new(content)
          before=@end_
          @end_["next"]=node
          @end_=node
          @end_["before"]=before
      end
      
  end
insert_h(content) click to toggle source
# File lib/dsl/doubly_list.rb, line 33
def insert_h(content)
      if content.class.to_s == "Array"
          for i in 0..content.count-1
          insert_head(content[i])
      end
  else
      insert_head(content)
  end
end
insert_head(content) click to toggle source
# File lib/dsl/doubly_list.rb, line 21
 def insert_head(content)
    if @head == nil
        insert_empty(content)
    else
        node = Node.new(content)
        node["next"] = @head
        @head = node
        @head["next"]["before"]=@head
    end
    
end
reverse() click to toggle source
# File lib/dsl/doubly_list.rb, line 121
def reverse
     aux = @end_
    cadena=""
while aux!=nil
    if aux["before"]!=nil
    cadena= cadena+"[#{aux["value"]}]<-->"
else
    cadena=cadena= cadena+"[#{aux["value"]}]"
end
    aux=aux["before"]
end
cadena
end
to_s() click to toggle source
# File lib/dsl/doubly_list.rb, line 106
def to_s
    aux = @head
    cadena=""
while aux!=nil
    if aux["next"]!=nil
    cadena= cadena+"[#{aux["value"]}]<-->"
else
    cadena=cadena= cadena+"[#{aux["value"]}]"
end
    aux=aux["next"]
end
cadena
end