Linked List
Linked List
Under the simplest form, each node is composed of a data and a reference (in other words, a link) to the next node
Each element (we will call it a node) of a list is comprising of two items - the data and a reference to the next node. The last node has a reference to null. The entry point(first node) into a linked list is called the Root or head or front of the list.
Two basic Types of Linked Lists 1. Singly Linked List 2. Doubly Linked List We can make as a Circular Linked List
So we must know the upper limit on the number of elements in advance. Also, generally, the allocated memory is equal to the upper limit irrespective of the usage, and in practical uses, upper limit is rarely reached. Inserting a new element in an array of elements is expensive, because room has to be created for the new elements and to create room existing elements have to shifted. For example, suppose we maintain a sorted list of IDs in an array id[ ]. id[ ] = {1000, 1010, 1050, 2000, 2040, .....}. And if we want to insert a new ID 1005, then to maintain the sorted order, we have to move all the elements after 1000 (excluding 1000). Deletion is also expensive with arrays until unless some special techniques are used. For example, to delete 1010 in id[ ], everything after 1010 has to be moved.
arrays 1) Dynamic size 2) Ease of insertion/deletion Linked lists have following drawbacks: 1) Random access is not allowed. We have to access elements sequentially starting from the first node. So we cannot do binary search with linked lists.
2) Extra memory space for a pointer is required with each element of the list. 3) Arrays have better performance.
Applications
Representing polynomials
hit BACK button. (linked list of URLs) UNDO functionality Stack, Queue,hash table, binary tree
Link to next
Data
node
ADDR Next
10
NULL
First Node
Creating Nodes
20
NULL
Second Node
List after adding the second node(at end of first) 10 20 NULL 15 NULL
10
20
15
NULL
Let us follow class in declaring a node. In fact struct and class both are same with few differences. Try to find out the difference between struct and class.
root is the first node. Initially root = NULL Indicates List is empty
Again different naming conventions:
root
10
20
15 6 NULL
NULL
10
20
15
NULL
root
25
NULL
10 25
20
15
NULL
Class activities
Executing creation and display of singly linked list. Extending the program to perform
Inserting a node at beginning Extending the program to search for a node. Illustrating how deletion will be done. Implementing Linked stacks (Stacks using linked list). Topics covered in assignment: Deleting nodes Searching a node Inserting node in the middle of a linked list