From c38089c8246d25f64557de6cf2542b48f91ace4c Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Sun, 23 Feb 2020 13:34:38 -0500 Subject: Add swap to double ended queue --- collections/double_ended_queue.c | 22 ++++++++++++++++++++++ collections/double_ended_queue.h | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) (limited to 'collections') diff --git a/collections/double_ended_queue.c b/collections/double_ended_queue.c index ee93196..6a3a810 100644 --- a/collections/double_ended_queue.c +++ b/collections/double_ended_queue.c @@ -159,3 +159,25 @@ deq *root; copy->beg = copy->base; copy->end = copy->base + deq_size(root); } + +void deq_swap(root, i, j) +deq *root; +int i, j; +{ + int len; + void *tmp; + + if (!root) { + return; + } + + len = deq_size(root); + + if (i >= len || j >= len) { + return; + } + + tmp = root->end[i]; + root->end[j] = root->end[i]; + root->end[i] = tmp; +} diff --git a/collections/double_ended_queue.h b/collections/double_ended_queue.h index a5645e2..d1d687a 100644 --- a/collections/double_ended_queue.h +++ b/collections/double_ended_queue.h @@ -19,10 +19,10 @@ void* deq_pop_front(deq*); void* deq_index(deq*, int); void* deq_pop_back(deq*); +void deq_swap(deq*, int, int); /* - * swap * resevee * truncate * front -- cgit v1.1