aboutsummaryrefslogtreecommitdiff
path: root/collections/double_ended_queue.c
diff options
context:
space:
mode:
Diffstat (limited to 'collections/double_ended_queue.c')
-rw-r--r--collections/double_ended_queue.c88
1 files changed, 44 insertions, 44 deletions
diff --git a/collections/double_ended_queue.c b/collections/double_ended_queue.c
index 7857c3a..bf329ca 100644
--- a/collections/double_ended_queue.c
+++ b/collections/double_ended_queue.c
@@ -111,16 +111,6 @@ deq *root;
root->base = tmp;
}
-void deq_set(root, index, item)
-deq *root;
-int index;
-void *item;
-{
- if (!root || !DEQ_IN_BOUNDS(root, index))
- return;
- root->base[(root->beg + index) % root->limit] = item;
-}
-
void* deq_index(root, index)
deq *root;
int index;
@@ -133,7 +123,7 @@ int index;
return root->base[(root->beg + index) % root->limit];
}
-void deq_push_back(root, item)
+void deq_push_front(root, item)
deq *root;
void *item;
{
@@ -145,14 +135,16 @@ void *item;
if (root->end >= root->limit)
deq_resize(root);
- root->base[root->end++] = item;
- root->end %= root->limit;
+ --root->beg;
+ root->beg %= root->limit;
+
+ root->base[root->beg] = item;
if (root->end == root->beg)
root->end = root->limit;
}
-void deq_push_front(root, item)
+void deq_push_back(root, item)
deq *root;
void *item;
{
@@ -164,15 +156,23 @@ void *item;
if (root->end >= root->limit)
deq_resize(root);
- --root->beg;
- root->beg %= root->limit;
-
- root->base[root->beg] = item;
+ root->base[root->end++] = item;
+ root->end %= root->limit;
if (root->end == root->beg)
root->end = root->limit;
}
+void deq_set(root, index, item)
+deq *root;
+int index;
+void *item;
+{
+ if (!root || !DEQ_IN_BOUNDS(root, index))
+ return;
+ root->base[(root->beg + index) % root->limit] = item;
+}
+
void* deq_pop_front(root)
deq *root;
{
@@ -222,6 +222,32 @@ int index;
return deq_pop_back(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;
+
+ i += root->beg;
+ i %= root->limit;
+
+ j += root->beg;
+ j %= root->limit;
+
+ tmp = root->base[i];
+ root->base[i] = root->base[j];
+ root->base[j] = tmp;
+}
+
void deq_remove(root, index)
deq *root;
int index;
@@ -313,32 +339,6 @@ deq *root;
return copy;
}
-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;
-
- i += root->beg;
- i %= root->limit;
-
- j += root->beg;
- j %= root->limit;
-
- tmp = root->base[i];
- root->base[i] = root->base[j];
- root->base[j] = tmp;
-}
-
/*Note: Does not currently reduce memory footprint*/
void deq_truncate(root, size)
deq *root;