A doubly-linked list is a type of linked list in which each node has a reference to both the next and previous nodes in the list.

 A doubly-linked lists have a constant-time insert and delete operation, but a linear-time search operation.

In a doubly-linked list, the head and tail nodes have a reference to null, indicating the start and end of the list

Doubly-linked lists can be traversed in either direction, starting at either the head or tail node and following the appropriate references

Doubly-linked lists are useful for implementing queues and for quickly traversing a list in both directions

Doubly-linked lists have more overhead than singly-linked lists, as each node requires an additional reference to the previous node.

Some common operations on doubly-linked lists include inserting, deleting, and searching for a specific node