0% found this document useful (0 votes)
59 views70 pages

Data Structure & Algorithm CS 102: Ashok K Turuk

The document discusses various algorithms for traversing, searching, inserting, and deleting nodes from linked lists. It begins with algorithms for traversing a linked list to print each node's data or search for a specific item. It then covers insertion algorithms, including adding a node to the beginning, after a given node, or in a sorted list. Deletion algorithms are provided for deleting the node after a given node, or deleting a node containing a specific item. The document also discusses header linked lists, circular linked lists, and some applications of linked lists like representing polynomials and sparse matrices.

Uploaded by

Uzma Chauhdry
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views70 pages

Data Structure & Algorithm CS 102: Ashok K Turuk

The document discusses various algorithms for traversing, searching, inserting, and deleting nodes from linked lists. It begins with algorithms for traversing a linked list to print each node's data or search for a specific item. It then covers insertion algorithms, including adding a node to the beginning, after a given node, or in a sorted list. Deletion algorithms are provided for deleting the node after a given node, or deleting a node containing a specific item. The document also discusses header linked lists, circular linked lists, and some applications of linked lists like representing polynomials and sparse matrices.

Uploaded by

Uzma Chauhdry
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 70

Data Structure & Algorithm

CS 102
Ashok K Turuk
List Traversal

Head Data Link

2
Head Data Link

PTR

3
Head Data Link

PTR = PTR - > Link

4
List Traversal

Let Head be a pointer to a linked


list in memory. Write an algorithm
to print the contents of each node
of the list

5
List Traversal
Algorithm
1. set PTR = Head
2. Repeat step 3 and 4 while
PTR  NULL
3. Print PTR->DATA
4. Set PTR = PTR -> LINK
5. Stop
6
Search for an ITEM

• Let Head be a pointer to a


linked list in memory. Write an
algorithm that finds the location
LOC of the node where ITEM
first appears in the list, or sets
LOC = NULL if search is
unsuccessful.

7
Search for an ITEM

Algorithm
1. Set PTR = Head
2. Repeat step 3 while PTR  NULL
3. if ITEM == PTR -> DATA, then
Set LOC = PTR, and Exit
else
Set PTR = PTR -> LINK
4. Set LOC = NULL /*search
unsuccessful */
5. Stop
8
Search for an ITEM

Algorithm [Sorted ]
1. Set PTR = Head
2. Repeat step 3 while PTR  NULL
3. if ITEM < PTR -> DATA, then
Set PTR = PTR->LINK,
else if ITEM == PTR->DATA, then
Set LOC = PTR, and Exit
else
Set LOC = NULL, and Exit
4. Set LOC = NULL /*search unsuccessful */
5. Stop
9
Insertion to a Linked List

Head Data Link

10
Insertion to Beginning

Head Data Link

PTR New Node

11
Insertion to Beginning

Head Data Link

PTR New Node


PTR->Link = Head
12
Insertion to Beginning

Head Data Link

PTR New Node


PTR->Link = Head , Head = PTR
13
Overflow and Underflow
• Overflow : A new Data to be inserted
into a data structure but there is no
available space.

• Underflow: A situation where one wants


to delete data from a data structure
that is empty.

14
Insertion to Beginning

Head Data Link

PTR New Node

Overflow , PTR == NULL 15


Insertion at the Beginning

Let Head be a pointer to a linked list in


memory. Write an algorithm to insert
node PTR at the beginning of the
List.

16
Insertion at the Beginning
Algorithm

1. If PTR == NULL , then Write


Overflow and Exit
2. Set PTR -> DATA = ITEM
3. Set PTR -> LINK = Head -> LINK
4. Set Head = PTR
5. Exit

17
Insertion After a Given Node

Let Head be a pointer to a linked list in


memory. Write an algorithm to insert
ITEM so that ITEM follows the node
with location LOC or insert ITEM as
the first node when LOC == NULL

18
Insertion at a Given Node

Head Data Link

LOC
A B

PTR New Node

19
Insertion at a Given Node

Head Data Link

LOC
A B

PTR New Node

PTR->Link = LOC->Link 20
Insertion at a Given Node

Head Data Link

LOC
A B

PTR New Node

LOC->Link = PTR 21
Insertion After a Given Node
Algorithm
1. If PTR == NULL , then Write
Overflow and Exit
2. Set PTR -> DATA = ITEM
3. If LOC == NULL
Set PTR -> LINK = Head
Set Head = PTR
Else Set PTR->Link = LOC->Link
Set LOC->Link = PTR
4. Exit
22
Insertion into a Sorted Linked List

Head Data Link

1000 2000 3000 4000 5000

3000 < 3500 < 4000


3500
23
Insertion into a Sorted Linked List

To Insert Between Node A and B We have to


Remember the Pointer to Node A which is the
predecessor Node of B

1000 2000 3000 4000 5000


A B

3000 < 3500 < 4000


24
Insertion into a Sorted Linked List
Steps to Find the LOC of Insertion

1. If Head == NULL, then Set LOC = NULL and Return


2. If ITEM < Head ->Data , then Set LOC = NULL and
Return
3. Set SAVE = Head and PTR = Head -> Link
4. Repeat Steps 5 and 6 while PTR  NULL
5. If ITEM < PTR -> Data then
LOC = SAVE and Return
6. Set SAVE = PTR and PTR = PTR->Link
7. Set LOC = SAVE
8. Return

25
Deletion Algorithm

26
Deletion Algorithm

27
Delete the Node Following a Given
Node

• Write an Algorithm that deletes the


Node N with location LOC. LOCP is the
location of the node which precedes N
or when N is the first node LOCP =
NULL

28
Delete the Node Following a Given
Node
• Algorithm: Delete(Head, LOC, LOCP)

1 If LOCP = NULL then


Set Head = Head ->Link. [Deletes the 1st
Node]
Else
Set LOCP->Link = LOC->Link [Deletes Node N]

2. Exit

29
Delete an Item

Let Head be a pointer to a linked


list in memory that contains integer
data. Write an algorithm to delete
node which contains ITEM.

30
Delete an Item
To delete a Node [Node B] We have to
Remember the Pointer to its predecessor
[Node A]

1000 2000 3000 4000 5000


A B

4000
31
Deletion of an ITEM
Algorithm

1. Set PTR=Head and TEMP = Head


2. Repeat step 3 while PTR  NULL
3. If PTR->DATA == ITEM, then
Set TEMP->LINK = PTR -> LINK, exit
else
TEMP = PTR
PTR = PTR -> LINK
4. Stop
32
Deletion of an ITEM
Algorithm
1. If Head == NULL , then
Write ITEM is not in the
List, Exit
2. If Head ->Data == Item
Head = Head -> Link
3. Set PTR=Head and TEMP =
Head
33
Deletion of an ITEM
Algorithm

4. Repeat step 4 while PTR  NULL


If PTR->DATA == ITEM, then
Set TEMP->LINK = PTR -> LINK, exit
else
TEMP = PTR
PTR = PTR -> LINK
5. Stop
34
Header Linked Lists
• A header linked list is a linked list
which always contains a special node
called header node

• Grounded Header List: A header list


where the last node contains the NULL
pointer.

Header Node
35
Header Linked Lists

• Circular Header List: A header list


where the last node points back to the
header node.

Header Node

36
Header Linked Lists
• Pointer Head always points to the
header node.

• Head->Link == NULL indicates that a


grounded header list is empty

• Head->Link == Head indicates that a


circular header list is empty

37
Header Linked Lists
• The first node in a header list is the
node following the header node
• Circular Header list are frequently used
instead of ordinary linked list
– Null pointer are not used, hence all pointer
contain valid addresses
– Every node has a predecessor, so the first
node may not require a special case.

38
Traversing a Circular Header List

• Let Head be a circular header list in


memory. Write an algorithm to print
Data in each node in the list.

39
Traversing a Circular Header List
Algorithm

1. Set PTR = Head->Link;


2. Repeat Steps 3 and 4 while PTR  Head
3. Print PTR->Data
4. Set PTR = PTR ->Link
5. Exit

40
Locating an ITEM

• Let Head be a circular header list in


memory. Write an algorithm to find the
location LOC of the first node in Head
which contains ITEM or return LOC =
NULL when the item is not present.

41
Locating an ITEM
Algorithm
1. Set PTR = Head->Link
2. Repeat while PTR ->Data  ITEM and PTR 
Head
Set PTR = PTR ->Link
3. If PTR->Data == ITEM then
Set LOC = PTR
else
Set LOC = NULL
4. Exit

42
Other variation of Linked List
• A linked list whose last node points back
to the first node instead of containing a
NULL pointer called a circular list

43
Other variation of Linked List
• A linked list which contains both a
special header node at the beginning of
the list and a special trailer node at the
end of list

Header Node Trailer Node

44
Applications of Linked Lists

1. Polynomial Representation and operation on Polynomials

Ex: 10 X 6 +20 X 3 + 55
 

2. Sparse Matrix Representation

0 0 11
22 0 0
0 0 66
Polynomials
A ( x )  a m 1 x e m 1
 am2 x em 2
 ...  a 0 x e0

coef expon link

Representation of Node
Example

a  3x 14
 2x 1 8

a
3 14 2 8 1 0 null

b  8x 14
 3x 10
 10 x 6

b
8 14 -3 10 10 6 null
Polynomial Operation

1. Addition 
2. Subtraction 
3. Multiplication
4. Scalar Division
Polynomial Addition

3 14 2 8 1 0
a
8 14 -3 10 10 6
b
11 14 a->expon == b->expon
d
3 14 2 8 1 0
a
8 14 -3 10 10 6
b
11 14 a->expon < b->expon
-3 10
d
Polynomial Addition

3 14 2 8 1 0
a
8 14 -3 10 10 6
b
11 14 -3 10 2 8
d
a->expon > b->expon
Polynomial Addition (cont’d)

3 14 2 8 1 0
a
8 14 -3 10 10 6
b
11 14 -3 10 2 8 10 6 1 0
d
a->expon > b->expon
Polynomial Subtraction

3 14 2 8 1 0
a
8 14 -3 10 10 6
b
-5 14 a->expon == b->expon
d
3 14 2 8 1 0
a
8 14 -3 10 10 6
b
-5 14 a->expon < b->expon
3 10
d
Polynomial Subtraction (cont’d)

3 14 2 8 1 0
a
8 14 -3 10 10 6
b
-5 14 3 10 2 8
d
a->expon > b->expon
Polynomial Addition (cont’d)

3 14 2 8 1 0
a
8 14 -3 10 10 6
b
-5 14 3 10 2 8 -10 6 1 0
d
a->expon > b->expon
Sparse Matrix
A sparse matrix is a very large
matrix that contains lot of zero’s.
In order to save storage space, a
sparse matrix stores only the
nonzero elements.
Linked list representation
Sparse Matrix

m n -- i j val i j val Null

0 0 5 0
2 7 0 9
A
0 0 0 0
 
0 3 8 0

4 4 -- 0 2 5 3 2 8 Null
Linked list representation
Sparse Matrix

ROWLINK

i j

aij

COLLINK
Linked list representation
Sparse Matrix

0 2 5

0 0 5 0 1 0 2 1 7 3 9
2 7 0 9
A
0 0 0 0
  2
0 3 8 0

3 1 3 2 8
Two-Way List
• What we have discussed till now is a
one-way list [ Only one way we can
traversed the list]
• Two-way List : Can be traversed in two
direction
– Forward : From beginning of the list to end
– Backward: From end to beginning of the list

59
Two-Way List
• A two-way list is a linear collection of
data element called nodes where each
node N is divided into three parts:
– A information field INFO which contains
the data of N
– A pointer field FORW which contains the
location of the next node in the list
– A pointer field BACK which contains the
location of the preceding node in the list

60
Two-Way List
• List requires two pointer variables:
– FIRST: which points to the first node in
the list
– LAST: which points to the last node in the
list
INFO field
BACK pointer
FORW pointer

61
Two-Way List

FIRST LAST

62
Two-Way List
Suppose LOCA and LOCB are the locations
of nodes A and B respectively in a two-way
list.

The statement that node B follows node A


is equivalent to the statement that node A
precedes node B

Pointer Property: LOCA->FORW = LOCB if


and only if LOCB->BACK = LOCA
63
Two-Way List

FIRST LAST

A B
Forward Pointer
Node A Backward Pointer
Node A
64
Two-Way List

FIRST LAST

A B
LOCA LOCB
LOCA->FORW = LOCB if and only if
LOCB->BACK = LOCA 65
Operation in two-way list

• Traversing
• Searching
• Deleting
• Inserting

66
Deletion in Two-Way List
DELETE NODE B

FIRST LAST

A B C
LOCB
LOCB->BACK->FORW = LOCB->FORW
67
Deletion in Two-Way List
DELETE NODE B

FIRST LAST

A B C
LOCB
LOCB->FORW->BACK = LOCB->BACK
68
Insertion in Two-Way List
INSERT NODE NEW
LOCA->FORW->BACK = NEW
FIRST NEW->FORW = LOCA->FORW
LAST

A B C
LOCA
LOCA->FORW = NEW
NEW NEW->BACK = LOCA

69
?

70

You might also like