lecture 5 data structures and algorithms

70
Data Structure & Algorithm CS 102 Ashok K Turuk

Upload: aakash-singhal

Post on 14-Jun-2015

425 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Lecture 5 data structures and algorithms

Data Structure & AlgorithmCS 102

Ashok K Turuk

Page 2: Lecture 5 data structures and algorithms

2

List Traversal

Head

Data Link

Page 3: Lecture 5 data structures and algorithms

3

=

Head

Data Link

PTR

Page 4: Lecture 5 data structures and algorithms

4

=

Head

Data Link

PTR = PTR - > Link

Page 5: Lecture 5 data structures and algorithms

5

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

Page 6: Lecture 5 data structures and algorithms

6

List Traversal Algorithm

1. set PTR = Head 2. Repeat step 3 and 4 while

PTR NULL3. Print PTR->DATA4. Set PTR = PTR -> LINK5. Stop

Page 7: Lecture 5 data structures and algorithms

7

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.

Page 8: Lecture 5 data structures and algorithms

8

Search for an ITEM

Algorithm1. Set PTR = Head 2. Repeat step 3 while PTR NULL3. if ITEM == PTR -> DATA, then

Set LOC = PTR, and Exitelse

Set PTR = PTR -> LINK4. Set LOC = NULL /*search

unsuccessful */5. Stop

Page 9: Lecture 5 data structures and algorithms

9

Search for an ITEM

Algorithm [Sorted ]1. Set PTR = Head 2. Repeat step 3 while PTR NULL3. 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

Page 10: Lecture 5 data structures and algorithms

10

Insertion to a Linked List

Head

Data Link

Page 11: Lecture 5 data structures and algorithms

11

Insertion to Beginning

Head

Data Link

New Node PTR

Page 12: Lecture 5 data structures and algorithms

12

Insertion to Beginning

Head

Data Link

New Node PTR

PTR->Link = Head

Page 13: Lecture 5 data structures and algorithms

13

Insertion to Beginning

Head

Data Link

New Node PTR

PTR->Link = Head , Head = PTR

Page 14: Lecture 5 data structures and algorithms

14

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.

Page 15: Lecture 5 data structures and algorithms

15

Insertion to Beginning

Head

Data Link

New Node PTR

Overflow , PTR == NULL

Page 16: Lecture 5 data structures and algorithms

16

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.

Page 17: Lecture 5 data structures and algorithms

17

Insertion at the BeginningAlgorithm

1. If PTR == NULL , then Write Overflow and Exit

2. Set PTR -> DATA = ITEM 3. Set PTR -> LINK = Head -> LINK4. Set Head = PTR 5. Exit

Page 18: Lecture 5 data structures and algorithms

18

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

Page 19: Lecture 5 data structures and algorithms

19

Insertion at a Given Node

Head

Data Link

New Node PTR

A BALOC

Page 20: Lecture 5 data structures and algorithms

20

Insertion at a Given Node

Head

Data Link

New Node PTR

BALOC

PTR->Link = LOC->Link

Page 21: Lecture 5 data structures and algorithms

21

Insertion at a Given Node

Head

Data Link

New Node PTR

BALOC

LOC->Link = PTR

Page 22: Lecture 5 data structures and algorithms

22

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 = HeadSet Head = PTR

Else Set PTR->Link = LOC->LinkSet LOC->Link = PTR

4. Exit

Page 23: Lecture 5 data structures and algorithms

23

Insertion into a Sorted Linked List

Head

Data Link

1000 2000 3000 4000 5000

35003000 < 3500 < 4000

Page 24: Lecture 5 data structures and algorithms

24

Insertion into a Sorted Linked List

1000 2000 3000 4000 5000

3000 < 3500 < 4000

BA

To Insert Between Node A and B We have to Remember the Pointer to Node A which is the predecessor Node of B

Page 25: Lecture 5 data structures and algorithms

25

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 NULL5. If ITEM < PTR -> Data then

LOC = SAVE and Return6. Set SAVE = PTR and PTR = PTR->Link7. Set LOC = SAVE 8. Return

Page 26: Lecture 5 data structures and algorithms

26

Deletion Algorithm

A

Page 27: Lecture 5 data structures and algorithms

27

Deletion Algorithm

A

Page 28: Lecture 5 data structures and algorithms

28

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

Page 29: Lecture 5 data structures and algorithms

29

Delete the Node Following a Given Node

• Algorithm: Delete(Head, LOC, LOCP)

1 If LOCP = NULL thenSet Head = Head ->Link. [Deletes the 1st Node]

Else Set LOCP->Link = LOC->Link [Deletes Node N]

2. Exit

Page 30: Lecture 5 data structures and algorithms

30

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.

Page 31: Lecture 5 data structures and algorithms

31

Delete an Item

1000 2000 3000 4000 5000

4000

BA

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

Page 32: Lecture 5 data structures and algorithms

32

Deletion of an ITEMAlgorithm

1. Set PTR=Head and TEMP = Head2. Repeat step 3 while PTR NULL3. If PTR->DATA == ITEM, then

Set TEMP->LINK = PTR -> LINK, exit else TEMP = PTR PTR = PTR -> LINK

4. Stop

Page 33: Lecture 5 data structures and algorithms

33

Deletion of an ITEMAlgorithm1. 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

Page 34: Lecture 5 data structures and algorithms

34

Deletion of an ITEMAlgorithm

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

Page 35: Lecture 5 data structures and algorithms

35

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

Page 36: Lecture 5 data structures and algorithms

36

Header Linked Lists

• Circular Header List: A header list where the last node points back to the header node.

Header Node

Page 37: Lecture 5 data structures and algorithms

37

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

Page 38: Lecture 5 data structures and algorithms

38

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.

Page 39: Lecture 5 data structures and algorithms

39

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.

Page 40: Lecture 5 data structures and algorithms

40

Traversing a Circular Header List Algorithm

1. Set PTR = Head->Link;2. Repeat Steps 3 and 4 while PTR

Head3. Print PTR->Data4. Set PTR = PTR ->Link5. Exit

Page 41: Lecture 5 data structures and algorithms

41

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.

Page 42: Lecture 5 data structures and algorithms

42

Locating an ITEM Algorithm

1. Set PTR = Head->Link2. Repeat while PTR ->Data ITEM and PTR

Head

Set PTR = PTR ->Link 3. If PTR->Data == ITEM then

Set LOC = PTRelse

Set LOC = NULL4. Exit

Page 43: Lecture 5 data structures and algorithms

43

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

Page 44: Lecture 5 data structures and algorithms

44

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

Page 45: Lecture 5 data structures and algorithms

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

Page 46: Lecture 5 data structures and algorithms

021021 ...)( ee

me

m xaxaxaxA mm

Representation of Node

Polynomials

coef expon link

Page 47: Lecture 5 data structures and algorithms

3 14 2 8 1 0a

8 14 -3 10 10 6b

123 814 xxa

61014 1038 xxxb

null

null

Example

Page 48: Lecture 5 data structures and algorithms

Polynomial Operation

1. Addition 2. Subtraction 3. Multiplication4. Scalar Division

Page 49: Lecture 5 data structures and algorithms

3 14 2 8 1 0a

-3 108 14 10 6b

11 14d

a->expon == b->expon

a

b

d

a->expon < b->expon

-3 10

Polynomial Addition

3 14 2 8 1 0

-3 108 14 10 6

11 14

Page 50: Lecture 5 data structures and algorithms

3 14 2 8 1 0a

8 14 -3 10 10 6b

11 14

a->expon > b->expon

-3 10d

2 8

Polynomial Addition

Page 51: Lecture 5 data structures and algorithms

3 14 2 8

1 0

a8 14 -3 10 10 6

b11 14

a->expon > b->expon

-3 10

d

2 8

Polynomial Addition (cont’d)

10 6

1 0

Page 52: Lecture 5 data structures and algorithms

3 14 2 8 1 0a

-3 108 14 10 6b

-5 14d

a->expon == b->expon

a

b

d

a->expon < b->expon

3 10

Polynomial Subtraction

3 14 2 8 1 0

-3 108 14 10 6

-5 14

Page 53: Lecture 5 data structures and algorithms

3 14 2 8 1 0a

8 14 -3 10 10 6b

-5 14

a->expon > b->expon

3 10d

2 8

Polynomial Subtraction (cont’d)

Page 54: Lecture 5 data structures and algorithms

3 14 2 8

1 0

a8 14 -3 10 10 6

b-5 14

a->expon > b->expon

3 10

d

2 8

Polynomial Addition (cont’d)

-10 6

1 0

Page 55: Lecture 5 data structures and algorithms

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.

Page 56: Lecture 5 data structures and algorithms

Linked list representationSparse Matrix

m n -- i j val i j val Null

0830

0000

9072

0500

A

4 4 -- 0 2 5 3 2 8 Null

Page 57: Lecture 5 data structures and algorithms

Linked list representationSparse Matrix

aij

i j

ROWLINK

COLLINK

Page 58: Lecture 5 data structures and algorithms

Linked list representationSparse Matrix

0830

0000

9072

0500

A

0

1

2

3

2 5

0 2 1 7 3 9

1 3 2 8

Page 59: Lecture 5 data structures and algorithms

59

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

Page 60: Lecture 5 data structures and algorithms

60

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

Page 61: Lecture 5 data structures and algorithms

61

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 pointerFORW pointer

Page 62: Lecture 5 data structures and algorithms

62

Two-Way List

FIRST LAST

Page 63: Lecture 5 data structures and algorithms

63

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

Page 64: Lecture 5 data structures and algorithms

64

Two-Way List

FIRST LAST

A B

Forward Pointer Node A Backward Pointer

Node A

Page 65: Lecture 5 data structures and algorithms

65

Two-Way List

FIRST LAST

A B

LOCA LOCB

LOCA->FORW = LOCB if and only if LOCB->BACK = LOCA

Page 66: Lecture 5 data structures and algorithms

66

Operation in two-way list

• Traversing • Searching • Deleting • Inserting

Page 67: Lecture 5 data structures and algorithms

67

Deletion in Two-Way List

FIRST LAST

A B

LOCB

DELETE NODE B

C

LOCB->BACK->FORW

LOCB->FORW =

Page 68: Lecture 5 data structures and algorithms

68

Deletion in Two-Way List

FIRST LAST

A B

LOCB

DELETE NODE B

C

LOCB->FORW->BACK

LOCB->BACK =

Page 69: Lecture 5 data structures and algorithms

69

Insertion in Two-Way List

FIRST LAST

A BLOCA

INSERT NODE NEW

C

NEW

LOCA->FORW->BACK = NEWNEW->FORW = LOCA->FORW

LOCA->FORW = NEW NEW->BACK = LOCA

Page 70: Lecture 5 data structures and algorithms

70

?