25
MOHAN LAL SUKHADIA UNIVERSITY College of Science LINKED LIST (SINGLY && DOUBLY) PRESENTING BY:- HARSHIT JAIN

Link list(by harshit)

Embed Size (px)

Citation preview

Page 1: Link list(by harshit)

MOHAN LAL SUKHADIA UNIVERSITY College of Science

LINKED LIST(SINGLY && DOUBLY)

PRESENTING BY:-HARSHIT JAIN

Page 2: Link list(by harshit)

LINKED LIST :-

It is a non-primitive data structure. In a link list elements are arranged in line by line manner link list is a collection of “NODES”.Every node contain two or more then two part.(1.)Data part:- It is used to hold the data or information.(2.)Address part:- It is used to hold the address of next or previous node

Page 3: Link list(by harshit)

What is linked list……?Node 1 Node 3Node 2

A linked list is a collection of objects linked together by references from one object to

another object.

By convention these objects are named as nodes.

So the basic linked list is collection of nodes where each node contains one or more data

fields and a reference to the next node.

The last node points to a NULL reference to indicate the end of the list.

Page 4: Link list(by harshit)

Both an array and a linked list are representations of a list of items in memory. The difference is in the way in which the items are linked together.

10S [1]

20 30 40 50S [2] S [3] S [4] S [5]

Compare the two representations for a list of five integers.

Array representation : -

Linked List representation : -

10 20 30 40 50 XS

Difference between ARRAY & LINKED LIST…..!!!

4672 8814851976497549

Page 5: Link list(by harshit)

There are three types of linked list:-

Singly linked list

Circular linked list

Doubly linked list

10 20

S

2355 3255

10 2032552355

1010

S

S

23553255

Page 6: Link list(by harshit)

Creating a Linked List

Designing the 1st Node. Allocating memory for the node. Adding more nodes as per requirement. Connecting the nodes, & setting last node’s address part to NULL.

Page 7: Link list(by harshit)

Designing the node

Node

struct node{int data;struct node *next;}

struct node{ int data;struct node *lptr;struct node *rptr;}

Node

10 2355 202355 3255

Page 8: Link list(by harshit)

Allocating memory

node *newnode = (node *) malloc (sizeof (node) );

Page 9: Link list(by harshit)

Operations on linked list….!!!

Adding 1st node Insertion

Search Display

Deletion

Page 10: Link list(by harshit)

Singly linked list

Page 11: Link list(by harshit)

Insertion:-

Step 1:- StartStep 2:- a=NewNodeStep 3:- Read a->dataStep 4:- a->next=NULLStep 5:- Start=aStep 6:- Stop

Creating 1st node

a

10a

10a

10Start

Page 12: Link list(by harshit)

Insertion:-at the beginning

a

10Start

10a

Step 1:- StartStep 2:- a=NewNodeStep 3:- Read a->dataStep 4:- a->next=StartStep 5:- Start=aStep 6:- Stop

20a Start 10

20start 10

Page 13: Link list(by harshit)

Insertion:-at the end

Step 1:- StartStep 2:- ptr=startStep 3:- while(ptr!=NULL)Step 4:- ptr=prt->nextStep 5:- a=NewNodeStep 6:- Read a->dataStep 7:- a->next=NULLStep 8:- ptr->next=aStep 9:- [End of while step 3]Step 10:- Stop

20start 10ptr

20start 10 30

Page 14: Link list(by harshit)

Insertion:-at middle:-

Step 1: BeginStep 2: ptr = StartStep 3: while (ptr!=NULL)Step 4: back = ptrStep 5: ptr = ptr -> nextStep 6: if (ele = ptr -> data) thenStep 7: a = New NodeStep 8: Read a -> dataStep 9: back -> next = aStep 10: a -> next = ptrStep 11: [End if of step 6]Step 12: [End while pf step 2]Step 13: End

20start 10

20start 30 10

Page 15: Link list(by harshit)

Step 1: BeginStep 2: if (Start->next = NULL) thenStep 3: print deletion not possible.Step 4: [End if of step 2]Step 5: ptr = StartStep 6: Start = Start -> nextStep 7: free (ptr)Step 8: End

Deletion

from the beginning

20start 10

start 10

Page 16: Link list(by harshit)

Step 1: BeginStep 2: ptr = StartStep 3: while (ptr != NULL)Step 4: back = ptrStep 5: ptr = ptr -> nextStep 6: [End while of step 3]Step 7: back -> next = NULLStep 8: free (ptr)Step 9: End

Deletion

from the end

20 start 10

20 start

Page 17: Link list(by harshit)

Step 1: BeginStep 2: ptr = StartStep 3: while (ptr != NULL)Step 4: back = ptrStep 5: ptr = ptr -> nextStep 6: if (ele = ptr -> data) thenStep 7: back -> next = ptr -> nextStep 8: free (ptr)Step 9: [End if of step 6]Step 10: [End while of step 3]Step 11: End

Deletion

from the middle

start 10 20 30

start 10 30

Page 18: Link list(by harshit)

Doubly linked list

Page 19: Link list(by harshit)

Step 1:- BeginStep 2:- a=NewNodeStep 3:- Read a->dataStep 4:- a->lptr=NULLStep 5:- a->rptr=NULLStep 6:- start=aStep 7:- End

Creating 1st node

Insertion

start 102355

Page 20: Link list(by harshit)

Step 1:- BeginStep 2:- a=NewNodeStep 3:- read a->dataStep 4:- a->rptr=startStep 5:- a->lptr=NULLStep 6:- start->lptr=aStep 7:- start=aStep 8:- End

At the beginning

Insertion

start 102355

start 202255

102355

Page 21: Link list(by harshit)

Step 1:- BeginStep 2:- ptr=startStep 3:- while(ptr->rptr=NULL)Step 4:- ptr=ptr->rptrStep 5:-[end of while step 3]Step 6:- a=NewNodeStep 7:- Read a->dataStep 8:- start->rptr=aStep 9:- a->lptr=startStep 10:- a->lptr=NULLStep 11:- End

At the End

Insertion

start 102355

2355start 10 20

3355

Page 22: Link list(by harshit)

Step 1: BeginStep 2: ptr = StartStep 3: while (ptr != NULL)Step 4: back = ptr Step 5: ptr = ptr -> rptrStep 6: if (ele = ptr -> data)Step 7: a = New NodeStep 8: Read a -> dataStep 9: back -> rptr = a -> lptrStep 10: a -> rptr = ptr -> rptrStep 11: a -> lptr = a -> rptrStep 12: ptr -> lptr = a -> rptrStep 13: [End if of step 6]Step 14: [End while of step 3]Step 15: End

At the middle

Insertion

2355start 10 20

3355

203355

3024552355

start 10

Page 23: Link list(by harshit)

Deletion

from the beginning

Step 1:- BeginStep 2:- if(start=NULL)Step 3:- print “empty list”Step 4:-[End of if step 2]Step 5:- else if(strat->rptr=NULL)Step 6:- print “list have only one element”Step 7:- start=NULLStep 8:- [End of else if step 5]Step 9:- elseStep 10:- ptr=startStep 11:- ptr->rptr->lptr=NULLStep 12:- start=ptr->rptrStep 13:- free(ptr)Step 14:- [End of else step 9]Step 15:- End

start 102355

2355start 10 20

3355

start 203355

Page 24: Link list(by harshit)

Deletion

from the End

Step 1:- BeginStep 2:- if(start=NULL) thenStep 3:- print "Empty list"Step 4:- elseStep 5:- ptr=startStep 6:- while(ptr->rptr!=NULL)Step 7:- back=ptrStep 8:- ptr=ptr->rptrStep 9:- [End of while step 6]Step 10:- ptr->lptr=NULLStep 11:- back->rptr=NULLStep 12:- [End of if step 2]Step 13:- End

2355start 10 20

3355

start 102355

Page 25: Link list(by harshit)

THANK YOU