-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathdeque.c
45 lines (36 loc) · 1.02 KB
/
deque.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// cc examples/deque.c && ./a.out
// Adapted from https://en.cppreference.com/w/cpp/container/deque
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <assert.h>
#define BGEN_NAME deque
#define BGEN_TYPE int
#define BGEN_NOORDER
#include "../bgen.h"
int main() {
int data[] = { 7, 5, 16, 8 };
int n = sizeof(data)/sizeof(int);
// Create a deque containing integers
struct deque *deque = 0;
for (int i = 0; i < n; i++) {
deque_push_back(&deque, data[i], 0);
}
// Add an integer to the beginning and end of the deque
deque_push_front(&deque, 13, 0);
deque_push_back(&deque, 25, 0);
// Iterate and print values of deque
struct deque_iter *iter;
deque_iter_init(&deque, &iter, 0);
deque_iter_scan(iter);
for (; deque_iter_valid(iter); deque_iter_next(iter)) {
int item;
deque_iter_item(iter, &item);
printf("%d ", item);
}
deque_iter_release(iter);
printf("\n");
return 0;
}
// Output:
// 13 7 5 16 8 25