DoublyLinkedList
Ruby implementation of doubly linked list, following some Ruby idioms.
Installation
Add this line to your application's Gemfile:
gem 'doubly_linked_list'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install doubly_linked_list
Usage
l = DoublyLinkedList.new
l.add_last('cat')
l.add_last('dog')
l.add_first('fish')
l.to_a
# => ['fish','cat','dog']
l.size
# => 3
l = DoublyLinkedList.new :items => ['cat','dog','fish']
l.to_a
# => ['cat','dog','fish']
l = DoublyLinkedList.new :list_info => {:title =>'test list', :description => 'Test out my doubly linked list.'},
:items => ['cat','dog','rabbit','fish']
l.to_a
# => ['cat','dog','rabbit','fish']
l.list_info
# => {:title =>'test list', :description => 'Test out my doubly linked list.'}
l.remove_first
#=> 'cat'
l.remove_last
#=> 'fish'
TODO
- Insert / delete in the middle
- Batch add in the middle
- Move item to different position
- Call back for item movements
Tests
Run test with
$ rspec
Contributing
- Fork it ( https://github.com/[my-github-username]/doubly_linked_list/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request