# Data Structures: Question Set – 10

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

The time complexity of deleting an element from a linked list depends on the location of the element. If the element to be deleted is at the beginning of the list, the time complexity is O(1). If the element to be deleted is at the end of the list, the time complexity is O(n), where n is the number of elements in the list. If the element to be deleted is at a specific position in the list, the time complexity is also O(n).

#### What is a doubly linked list?

Each node in a doubly linked list holds a reference to both the node before it and the node after it in the sequence.

#### What benefits do doubly linked lists provide over singly linked lists?

The fundamental benefit of utilising a double linked list over a single linked list is that the latter can only move ahead, whilst the former can move both forward and backward. Furthermore, since it is not necessary to go through the list to locate the previous node, deleting a node from a doubly linked list is more effective than deleting a node from a singly linked list.

#### What is a circular linked list?

In a circular linked list, the last node in the list points to the first node, forming a circular loop.

#### What are a few uses for linked lists?

Applications that call for dynamic data structures, such as implementing stacks, queues, and hash tables, can make use of linked lists. They are frequently used in operating systems and compilers to manage symbol tables and memory.

#### What is the difference between a singly linked list and a doubly linked list?

A doubly linked list contains nodes that have references to both the previous and next nodes in the sequence, as opposed to a singly linked list, which has nodes that only carry a reference to the next node in the sequence. In contrast to a single linked list, which can only be traversed in one direction, a doubly linked list can be traversed in both directions.

#### How can a node be added to a linked list at the beginning?

To insert a node at the beginning of a linked list, you first allocate memory for the new node, set its data value, and then set its next pointer to point to the current head node of the list. Finally, you update the head pointer to point to the new node.

#### What is the best way to add a node at the end of a linked list?

You must first iterate the list to locate the last node before allocating memory for the new node, setting its data value, and setting its next pointer to NULL. This is how you add a node to the end of a linked list. The last step is to change the last node’s next pointer to point at the new node.

#### How do you delete a node from a linked list?

If you want to remove a node from a linked list, you must first locate it by traversing the list. The memory allotted for the node to be deleted is then released after updating the previous node’s next pointer to point to the node after the node to be deleted.

#### How do you find the middle element of a linked list?

To find the middle element of a linked list, you can use the “slow and fast pointer” approach. Initialize two pointers, one slow pointer and one fast pointer, both pointing to the head of the list. Move the slow pointer one step at a time, and the fast pointer two steps at a time. When the fast pointer reaches the end of the list, the slow pointer will be pointing to the middle element.