# Data Structures: Question Set – 11

#### What is a self-referential structure in linked list?

A self-referential structure is a structure that contains a pointer to an instance of the same structure type. In the context of linked lists, a node in the list is a self-referential structure, since it contains a pointer to another instance of the same structure type.

#### What distinguishes a stack from a linked list?

In order to facilitate quick key-value pair lookups, data structures like hash tables use a hash function to map keys to corresponding indexes in arrays. Hash tables frequently employ linked lists to deal with collisions, which occur when two or more keys hash to the same index. When a collision happens, all key-value pairs that hash to the same index are kept in a linked list.

#### What are some typical linked list operations?

Inserting a node, removing a node, traversing the list, calculating its length, locating its middle member, and reversing the list are a few typical operations on a linked list.

The increased memory usage for storing the pointers, the absence of constant-time random access, and the possibility of pointer problems like null pointer dereference or memory leaks are some drawbacks of linked lists. Moreover, for some operations linked lists might not be as cache-friendly as arrays.

#### What is a skip list?

A skip list is a probabilistic data structure that makes it easy to find, add, and remove items from a sorted list. To enable effective searches without requiring the list to be fully sorted, skip lists use multiple levels of linked lists, where each level represents a subset of the list’s components.

#### What is the time complexity of searching for an element in a sorted linked list?

If the list employs a binary search technique, searching for an entry has an O(log n) time complexity since we can filter out half of the remaining search space with each comparison.

#### What is a circular buffer?

A circular buffer is a type of data structure that stores a sequence of elements in a fixed-size buffer. When the buffer is filled, fresh elements circularly overwrite the earliest elements. The implementation of circular buffers can be done with an array or linked list.

#### What is the time complexity of deleting a node from a linked list?

Since we might need to traverse the complete list to discover the node that needs to be deleted, deleting a node from a linked list has an O(n) time complexity.

#### How time-consuming is it to determine the length of a linked list?

As we must traverse the complete list to count the number of nodes, finding the length of a linked list has an O(n) time complexity.