aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlake Romero <blake@blkrom.com>2024-09-19 18:06:34 +0100
committerBlake Romero <blake@blkrom.com>2024-10-30 10:13:26 +0000
commiteb5730b438d15d99f4e38565d4e132a3faef994e (patch)
treeffbc817f3143b99383f6ac16c639b3a63c7fa75d
parentb018310aa02d235a7f3fe3c3baf9dd70b459fe38 (diff)
Fix llfree removing nodes
-rw-r--r--src/ll.c13
-rw-r--r--src/ll.h2
2 files changed, 9 insertions, 6 deletions
diff --git a/src/ll.c b/src/ll.c
index fdf86af..8e2d078 100644
--- a/src/ll.c
+++ b/src/ll.c
@@ -70,15 +70,18 @@ void llinsert(Node** head, int value, int index) {
node->next = n;
}
-void llfree(Node* head) {
- Node* n = NULL;
- while (head != NULL) {
- n = head;
- head = head->next;
+void llfree(Node** head) {
+ while (*head != NULL) {
+ Node* n = *head;
+ *head = (*head)->next;
free(n);
}
+ *head = NULL;
}
+// TODO: llfree recursive implementation
+// ...
+
int llrmlast(Node** head) {
Node* n = *head;
Node* cur = NULL;
diff --git a/src/ll.h b/src/ll.h
index f777ace..b4c8cc9 100644
--- a/src/ll.h
+++ b/src/ll.h
@@ -41,7 +41,7 @@ void llinsert(Node** head, int value, int index);
// Free nodes from memory
// O(n)
-void llfree(Node* head);
+void llfree(Node** head);
// Remove last node
// O(n)