1 / 89

# Linked List: Traversal Insertion Deletion - PowerPoint PPT Presentation

Lecture 9. Linked List: Traversal Insertion Deletion. LB. Linked List Traversal. LB. Linked List Traversal. Traversal means “visiting” or examining each node. Simple linked list Start at the beginning Go one node at a time until the end Recursive procedure (or function)

Related searches for Linked List: Traversal Insertion Deletion

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

• Traversal means “visiting” or examining each node.

• Start at the beginning

• Go one node at a time until the end

• Recursive procedure (or function)

• Looks at just one node

• What procedure will look at the rest?

The Node Code

Node definesa record

data isoftype Num

next isoftype Ptr toa Node

endrecord

The Big Picture

42

98

12

6

heap

stack

The Little Picture

12

The Classic Code

Procedure Traverse

(current isoftype in Ptr toa Node)

// Precon: Pass in pointer to a list

// Purpose: Print each data item

// Postcon: No changes to list

if(current <> NIL) then

print(current^.data)

Traverse(current^.next)

endif

endprocedure // Traverse

The Big Picture

42

98

12

6

heap

stack

### Questions?

node definesa record

data isoftype Num

next isoftype ptr toa node

endrecord

48

17

142

The Scenario

• You have a linked list

• Perhaps empty, perhaps not

• Perhaps ordered, perhaps not

Involves two steps:

• Finding the correct location

• Doing the work to add the node

• Three possible positions:

• The front

• The end

• Somewhere in the middle

93

Inserting to the Front

48

17

142

• There is no work to find the correct location

• Empty or not, head will point to the right location

//

Don’t Worry!

Inserting to the End

//

48

17

142

• Find the end of the list(when at NIL)

• Recursion or iteration

//

142

Inserting to the Middle

//

17

48

142

• Used when order is important

• Go to the node that should follow the one to add

• Recursion or iteration

• Create the new node

• Fill in the data field

• Deal with the next field

• Point to nil (if inserting to end)

• Point to current (front or middle)

temp <- new(Node)

temp^.data <- new_data

temp^.next <- current

current <- temp

• To front

• No recursion needed

• To end

• Get to the end, then add node

• In order (in middle)

• To maintain sorted property

### Inserting at the Front of a Linked List

• Need an in/out pointer parameter

• Create new node

• Fill in data

• Make new node’s next pointer point to current

• Update current to point to new node

Current new_data temp

2

R

Animated Insert to Front of Linked List

4

17

2

(current iot in/out ptr toa Node,

procedure Insert (current iot in/out ptr toa Node,

new_data isoftype in Num)

temp isoftype ptr toa Node

temp <- new(Node)

temp^.data <- new_data

temp^.next <- current

current <- temp

endprocedure

temp <- new(Node)

temp^.data <- new_data

temp^.next <- current

current <- temp

### Inserting at the End of a Linked List

• Recursively traverse the list until at end

• Then:

• Create new node at current

• Fill in data

• Terminate the new node’s next pointer to point to NIL

procedure Add_To_End( current isoftype in/out Ptr toa Node, new_data isoftype in Num )

// Purpose: Add new node to end of list

// Pre: current points to NIL-terminated list

// Post: new list has added element at end

if( current = NIL ) then

current <- new( Node )

current^.data <- new_data

current^.next <- NIL

else

endif

current new_data 53

current new_data 53

current new_data 53

current new_data 53

R

R

R

R

48

17

142

53

### Inserting in Order into a Linked List

• Recursively traverse until you find the correct place to insert

• Compare to see if you need to insert before current

• If adding largest value, then insert at the end

• Perform the commands to do the insertion

• Create new node

• Update the next pointer of the new node

• Update current to point to new node

procedure Insert_In_Order(current isoftype in/out Ptr toa Node, new_data isoftype in Num )

temp isoftype Ptr toa Node

if ((current = NIL) OR

(current^.data > new_data)) then

temp <- new( Node )

temp^.data <- new_data

temp^.next <- current

current <- temp

else

Insert_In_Order(current^.next,new_data)

endif

endprocedure //Insert_In_Order

R

R

current new_data temp

current new_data temp

current new_data temp

19

19

19

Inserting In Order into a Linked List

13

18

23

19

• Inserting into a linked list involves two steps:

• Find the correct location

• Do the work to insert the new value

• We can insert into any position

• Front

• End

• Somewhere in the middle(to preserve order)

### Deleting an Element from a Linked List

Node definesa record

data isoftype num

next isoftype ptr toa Node

endrecord

42

The Scenario

• Begin with an existing linked list

• Could be empty or not

• Could be ordered or not

4

17

42

The Scenario

• Begin with an existing linked list

• Could be empty or not

• Could be ordered or not

4

17

The Scenario

• Begin with an existing linked list

• Could be empty or not

• Could be ordered or not

4

17

The Scenario

• Begin with an existing linked list

• Could be empty or not

• Could be ordered or not

4

17

• We’ll examine three situations:

• Delete the first element

• Delete the first occurrence of an element

• Delete all occurrences of a particular element

• This can be done without any traversal/searching

• Requires an in/out pointer

procedure DeleteFront(current iot in/out ptr toa Node)

// deletes the first node in the list

if (current <> nil) then

current <- current^.next

endif

endprocedure

• Deletion from a linked list involves two steps:

• Find a match to the element to be deleted(traverse until nil or found)

• Perform the action to delete

• Performing the deletion is trivial:

current <- current^.next

• This removes the element, since nothing will point to the node.

42

4

17

.

.

.

.

42

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

42

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

42

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

42

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

42

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

42

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

42

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

42

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

42

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

42

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

42

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete single occurrence of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

else

Delete(cur^.next, target)

endif

endif

endprocedure

42

Target = 4

17

.

.

.

.

42

17

.

.

.

.

• Deleting all occurrences is a little more difficult.

• Traverse the entire list and don’t stop until you reach nil.

• If you delete, recurse on current

• If you don’t delete, recurse on current^.next

4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

4

Target = 4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

Target = 4

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

Target = 4

Target = 4

Target = 4

4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

Target = 4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

Target = 4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

Target = 4

17

.

.

.

.

procedure Delete(cur iot in/out ptr toa Node,

target isoftype in num)

// Delete all occurrences of a node.

if(cur <> NIL) then

if(cur^.data = target) then

cur <- cur^.next

Delete(cur, target)

else

Delete(cur^.next, target)

endif

endif

endprocedure

Target = 4

17

.

.

.

.

17

.

.

.

.

• Deletion involves:

• Getting to the correct position

• Moving a pointer so nothing points to the element to be deleted

• Can delete from any location

• Front

• First occurrence

• All occurrences