Skip to content

Latest commit

 

History

History

linked-list

Linked List

Welcome to Linked List on Exercism's JavaScript Track. If you need help running the tests or submitting your code, check out HELP.md.

Instructions

Implement a doubly linked list.

Like an array, a linked list is a simple linear data structure. Several common data types can be implemented using linked lists, like queues, stacks, and associative arrays.

A linked list is a collection of data elements called nodes. In a singly linked list each node holds a value and a link to the next node. In a doubly linked list each node also holds a link to the previous node.

You will write an implementation of a doubly linked list. Implement a Node to hold a value and pointers to the next and previous nodes. Then implement a List which holds references to the first and last node and offers an array-like interface for adding and removing items:

  • push (insert value at back);
  • pop (remove value at back);
  • shift (remove value at front).
  • unshift (insert value at front);

To keep your implementation simple, the tests will not cover error conditions. Specifically: pop or shift will never be called on an empty list.

If you want to know more about linked lists, check Wikipedia.

Your list must also implement the following interface:

  • delete (delete the first occurrence of a specified value)
  • count (count the number of items in the list)

NOTE: Do not use a library to implement this exercise. Do not use a backing array to implement this exercise.

Source

Created by

  • @matthewmorgan

Contributed to by

  • @ankorGH
  • @bdjnk
  • @cmccandless
  • @jcshih
  • @junedev
  • @monte-hayward
  • @rchavarria
  • @ryanplusplus
  • @SleeplessByte
  • @thanhcng

Based on

Classic computer science topic