Git Product home page Git Product logo

doubly-linked-list's Introduction

Bonus: Build a Doubly Linked List

Learning Goals

  • Define a doubly linked list data structure
  • Implement a common methods of a doubly linked list class

Introduction

Today we'll be implementing a doubly linked list. A doubly linked list is like a singly-linked list, except it has an extra attribute on each node: a prev pointer that points to the previous node.

Linked List

Implement a Doubly Linked List

For this challenge, assume that only one node is added at a time, including upon initialization of a new list.

1. Modify the Node Class

Each node should have a pointer called prev that points to the node that comes before it. If no node comes before it, it should be a falsy value, such as null in JS or nil in Ruby.

node = new Node('first')
node.prev
=> nil or null

node.prev = new Node('zeroth')
node.prev
=> Node with value 'zeroth'

2. Modify the LinkedList Class

Look through the methods and determine which need to be modified in order to ensure that a node's prev attribute always points to the correct Node.

list = new LinkedList
list.add_first(new Node('zeroth'))
list.head
=> Node with value 'zeroth'
list.head.prev
=> nil or null

list.add_first(new Node('less than zero'))
list.head
=> Node with value 'less than zero'
list.head.next
=> Node with value 'zeroth'
list.head.next.prev
=> Node with value 'less than zero'

list.remove_first
list.head
=> Node with value 'zeroth'
list.head.prev
=> nil or null

Use the language of your choosing. We've included code from the original LinkedList implementation. You may also copy and paste your own.

We've also included the original LinkedList tests, so you can ensure that your code still functions correctly.

Before you start coding

  1. Rewrite the problem in your own words
  2. Validate that you understand the problem
  3. Write your own test cases
  4. Pseudocode
  5. Code!

And remember, don't run our tests until you've passed your own!

How to run your own tests

Ruby

  1. cd into the ruby folder
  2. ruby <filename>.rb

JavaScript

  1. cd into the javascript folder
  2. node <filename>.js

How to run our tests

Ruby

  1. cd into the ruby folder
  2. bundle install
  3. rspec

JavaScript

  1. cd into the javascript folder
  2. npm i
  3. npm test

doubly-linked-list's People

Contributors

hellorupa avatar ihollander avatar niak-130 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.