Mescal
Loading...
Searching...
No Matches
type_dequeue.h
Go to the documentation of this file.
1
6#ifndef dequeue_H
7#define dequeue_H
8
9 /* ____ */
10 /* | _ \ ___ __ _ _ _ ___ _ _ ___ ___ */
11 /* | | | |/ _ \/ _` | | | |/ _ \ | | |/ _ \/ __| */
12 /* | |_| | __/ (_| | |_| | __/ |_| | __/\__ \ */
13 /* |____/ \___|\__, |\__,_|\___|\__,_|\___||___/ */
14 /* |_| */
15
16#include <stdbool.h>
17#include <stdio.h>
18#include "type_basic.h"
19
20
21
26typedef struct {
27 uint* array;
29 uint left;
30 uint right;
31 bool empty;
32} dequeue;
33
34/**************/
35/* Primitives */
36/**************/
37
46
52);
53
62);
63
72);
73
79);
80
85void lefins_dequeue(uint,
86 dequeue*
87);
88
93void rigins_dequeue(uint,
94 dequeue*
95);
96
108 uint
109);
110
122 uint
123);
124
133);
134
143);
144
151 dequeue*,
152 uint
153);
154
162bool mem_dequeue(uint,
163 dequeue*
164);
165
171);
172
179);
180
181/************************************************************/
182/* Function specific to sorted dequeues with no repetitions */
183/************************************************************/
184
192bool mem_dequeue_sorted(uint,
193 dequeue*,
194 uint*
195);
196
197
209 dequeue*
210);
211
220 dequeue*
221);
222
223dequeue* make_inter_sorted_dequeue_array(dequeue* p, uint* arr, uint size);
224
233 dequeue*
234);
235
236
245 uint
246);
247
258 dequeue*
259);
260
261
268 dequeue**,
269 uint
270);
271#endif // dequeue_H_
Type used to represent a dequeue of unsigned integers.
Definition type_dequeue.h:26
uint left
Index of the leftmost value in the dequeue.
Definition type_dequeue.h:29
uint * array
Array of values.
Definition type_dequeue.h:27
bool empty
Boolean indicating whether the dequeue is empty.
Definition type_dequeue.h:31
uint right
Index following the rightmost value in the dequeue.
Definition type_dequeue.h:30
uint size_array
Size of the array of values.
Definition type_dequeue.h:28
Basic types.
uint rigpull_dequeue(dequeue *)
Removes the rightmost value of a dequeue.
Definition type_dequeue.c:206
void insert_dequeue(dequeue *, uint)
Inserts a new value inside a sorted dequeue with no repetitions.
Definition type_dequeue.c:469
void merge_array_sorted_dequeue(dequeue *, dequeue **, uint)
Merges all dequeues in the array (all of them sorted with no repetitions) into a single dequeue (whic...
Definition type_dequeue.c:527
uint rigread_dequeue(dequeue *, uint)
Read a value inside a dequeue without removing it (right-left version).
Definition type_dequeue.c:137
void rigins_dequeue(uint, dequeue *)
Inserts a new value on the right of a dequeue.
Definition type_dequeue.c:172
void merge_sorted_dequeue(dequeue *, dequeue *)
Merge of two sorted dequeues with no repetitions.
Definition type_dequeue.c:391
void makeempty_dequeue(dequeue *)
Empties a dequeue.
Definition type_dequeue.c:106
void print_dequeue(dequeue *)
Displays a dequeue on the standard output.
Definition type_dequeue.c:242
bool isempty_dequeue(dequeue *)
Tests whether a dequeue is empty.
Definition type_dequeue.c:101
dequeue * make_inter_sorted_dequeue(dequeue *, dequeue *)
Intersection of two sorted dequeues with no repetitions.
Definition type_dequeue.c:422
void copy_dequeue_right(dequeue *, dequeue *, uint)
Copies all elements in a dequeue to the right of another dequeue. Shifts all values by an input numbe...
Definition type_dequeue.c:224
dequeue * create_dequeue(void)
Creation of an empty dequeue.
Definition type_dequeue.c:80
uint size_dequeue(dequeue *)
Computes the size of a dequeue.
Definition type_dequeue.c:113
bool mem_dequeue(uint, dequeue *)
Tests if a value occurs inside a dequeue.
Definition type_dequeue.c:232
bool mem_dequeue_sorted(uint, dequeue *, uint *)
Tests if a value occurs inside a sorted dequeue with no repetition.
Definition type_dequeue.c:368
dequeue * dequeue_to_indices(dequeue *, dequeue *)
Takes two dequeues sorted in increasing order with no repetition as input such that the first one is ...
Definition type_dequeue.c:510
uint lefread_dequeue(dequeue *, uint)
Read a value inside a dequeue without removing it (left-right version).
Definition type_dequeue.c:126
void lefins_dequeue(uint, dequeue *)
Inserts a new value on the left of a dequeue.
Definition type_dequeue.c:157
void delete_dequeue(dequeue *)
Release of a dequeue.
Definition type_dequeue.c:92
void sort_dequeue_norepeat(dequeue *)
Sorts a dequeue in increasing order and keeps only a single copy of each occuring value.
Definition type_dequeue.c:306
bool intersec_dequeue(dequeue *, dequeue *)
Tests if two sorted dequeues with no repetitions have a nonempty intersection.
Definition type_dequeue.c:484
uint lefpull_dequeue(dequeue *)
Removes the leftmost value of a dequeue.
Definition type_dequeue.c:188