-
Notifications
You must be signed in to change notification settings - Fork 13
/
list.c
49 lines (38 loc) · 1.13 KB
/
list.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
46
47
48
49
#include <stdio.h>
#include <assert.h>
#include <dynamic.h>
static int compare(void *p1, void *p2)
{
return *(int *) p1 - *(int *) p2;
}
int main()
{
list list;
int *p;
list_construct(&list);
list_push_back(&list, (int[]) {4}, sizeof(int));
list_push_back(&list, (int[]) {5}, sizeof(int));
list_push_back(&list, (int[]) {6}, sizeof(int));
list_push_front(&list, (int[]) {3}, sizeof(int));
list_push_front(&list, (int[]) {2}, sizeof(int));
list_push_front(&list, (int[]) {1}, sizeof(int));
printf("foreach\n");
list_foreach(&list, p)
printf("%d\n", *p);
printf("foreach reverse\n");
list_foreach_reverse(&list, p)
printf("%d\n", *p);
p = list_find(&list, compare, (int[]) {1});
printf("found %d\n", *p);
list_insert(p, (int[]) {-2}, sizeof(int));
list_insert(p, (int[]) {0}, sizeof(int));
list_insert(list_front(&list), (int[]) {-1}, sizeof(int));
list_insert(list_end(&list), (int[]) {7}, sizeof(int));
printf("[forward]\n");
list_foreach(&list, p)
printf("%d\n", *p);
printf("[backward]\n");
list_foreach_reverse(&list, p)
printf("%d\n", *p);
list_destruct(&list, NULL);
}