Basic Operations
Basic Operations
Nick Mertin
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 1 / 17
Basic Operations
1 Basic Operations
Overview
Insertion
Removal
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 2 / 17
Basic Operations Overview
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 3 / 17
Basic Operations Overview
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 3 / 17
Basic Operations Overview
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 3 / 17
Basic Operations Overview
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 3 / 17
Basic Operations Overview
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 3 / 17
Basic Operations Overview
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 4 / 17
Basic Operations Insertion
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 5 / 17
Basic Operations Insertion
Example
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 6 / 17
Basic Operations Insertion
Example
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 6 / 17
Basic Operations Insertion
Example
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 6 / 17
Basic Operations Insertion
Attempted Implementation
// 'nums' now points to the 'tail' slot where we need to insert the node.
new_node->tail = *nums;
*nums = new_node;
}
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 7 / 17
Basic Operations Insertion
Attempted Implementation
// 'nums' now points to the 'tail' slot where we need to insert the node.
new_node->tail = *nums;
*nums = new_node;
}
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 7 / 17
Basic Operations Insertion
Revised Implementation
// 'nums' now points to the 'tail' slot where we need to insert the node.
new_node->tail = *nums;
*nums = new_node;
return true;
}
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 8 / 17
Basic Operations Removal
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 9 / 17
Basic Operations Removal
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 9 / 17
Basic Operations Removal
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 9 / 17
Basic Operations Removal
Implementation
// 'nums' now points to the 'tail' slot where we need to remove the node.
struct list_node *old_node = *nums;
*nums = old_node->tail;
free(old_node);
return true;
}
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 10 / 17
More Complex Operations
1 Basic Operations
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 11 / 17
More Complex Operations Search
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 12 / 17
More Complex Operations Search
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 12 / 17
More Complex Operations Search
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 13 / 17
More Complex Operations Search
Implementation
// We've reached the end of the list without finding the target value.
return false;
}
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 14 / 17
More Complex Operations Update
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 15 / 17
More Complex Operations Update
Implementation
// 'nums' now points to the node we need to change the value of.
nums->value = new_num;
return true;
}
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 16 / 17
More Complex Operations Looking Forward
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 17 / 17
More Complex Operations Looking Forward
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 17 / 17
More Complex Operations Looking Forward
Nick Mertin (Queen’s ECE) Basic Operations on Lists September 11, 2023 17 / 17