A linked list is a non-sequential collection of data items. It is a dynamic data structure.

For every data item in a linked list, there is an associated pointer that would give the

memory location of the next data item in the linked list.

The data items in the linked list are not in consecutive memory locations. They may be

anywhere, but the accessing of these data items is easier as each data item contains

the address of the next data item.

## Advantages of linked list :

Linked lists have many advantages. Some of the very important advantages are:

- Linked lists are dynamic data structures. i.e., they can grow or shrink during

the execution of a program. - Linked lists have efficient memory utilization. Here, memory is not pre-

allocated. Memory is allocated whenever it is required and it is de-allocated

(removed) when it is no longer needed. - Insertion and Deletions are easier and efficient. Linked lists provide flexibility

in inserting a data item at a specified position and deletion of the data item

from the given position. - Many complex applications can be easily carried out with linked lists.

## Disadvantages of linked list :

- It consumes more space because every node requires a additional pointer to

store address of the next node. - Searching a particular element in list is difficult and also time consuming.

## Types of Linked Lists :

Basically we can put linked lists into the following four items:

1. Single Linked List.

2. Double Linked List.

3. Circular Linked List.

4. Circular Double Linked List.

A single linked list is one in which all nodes are linked together in some sequential

manner. Hence, it is also called as linear linked list.

A double linked list is one in which all nodes are linked together by multiple links which

helps in accessing both the successor node (next node) and predecessor node

(previous node) from any arbitrary node within the list. Therefore each node in a

double linked list has two link fields (pointers) to point to the left node (previous) and

the right node (next). This helps to traverse in forward direction and backward

direction.

A circular linked list is one, which has no beginning and no end. A single linked list can

be made a circular linked list by simply storing address of the very first node in the link

field of the last node.

A circular double linked list is one, which has both the successor pointer and

predecessor pointer in the circular manner.

## Applications of linked list :

1. Linked lists are used to represent and manipulate polynomial. Polynomials are

expression containing terms with non zero coefficient and exponents. For

example:

**P(x) = a0 Xn + a1 Xn-1 + …… + an-1 X + an**

2. Represent very large numbers and operations of the large number such as

addition, multiplication and division.

3. Linked lists are to implement stack, queue, trees and graphs.

4. Implement the symbol table in compiler construction