aboutsummaryrefslogtreecommitdiff
path: root/collections/double_ended_queue.c
diff options
context:
space:
mode:
authorTucker Evans <tucker@tuckerevans.com>2020-05-30 20:11:45 -0400
committerTucker Evans <tucker@tuckerevans.com>2020-05-30 20:11:45 -0400
commit10cd9eadf3f14d4b25ef85ea563938a784fcf20c (patch)
treeb43791b9c1b3917340242ce30fc55991041d927c /collections/double_ended_queue.c
parent4e4704b0251bb2b03d0fa573437b77b15567441c (diff)
Add deq_clear function for double ended queue.
Frees all elements in double ended queue, does not free the queue struct itself (deq_free is used for this).
Diffstat (limited to 'collections/double_ended_queue.c')
-rw-r--r--collections/double_ended_queue.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/collections/double_ended_queue.c b/collections/double_ended_queue.c
index 956e362..7938307 100644
--- a/collections/double_ended_queue.c
+++ b/collections/double_ended_queue.c
@@ -184,6 +184,9 @@ deq *root;
return root->base[root->end];
}
+/* Note: Elements are not freed
+ * deq_clear should be called before if they are no longer needed.
+ */
void deq_free(root)
deq *root;
{
@@ -193,6 +196,17 @@ deq *root;
free(root);
}
+void deq_clear(root)
+deq *root;
+{
+ int i, size;
+
+ size = deq_size(root);
+ for (i = 0; i < size; i++) {
+ free(deq_index(root, i));
+ }
+}
+
void deq_print(root, to_string)
deq *root;
char* to_string(void*);