-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlist.h
60 lines (56 loc) · 1.35 KB
/
list.h
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
50
51
52
53
54
55
56
57
58
59
60
#ifndef _LIST_H_
#define _LIST_H_
typedef struct Link
{
void *data;
struct Link *next;
}Link;
/* sort the list */
void
list_sort(Link **list,
int (*compare)(void *, void *));
/* link will not make a copy */
int
list_add_order(Link **list, void *data,
int (*compare)(void *, void*));
int
list_add_index(Link **list, void *data, int index);
/* link to the end */
int
list_add(Link **list, void *data);
/* delete will free the space */
int
list_delete_item(Link **list, void *data,
int (*compare)(void *, void*),
void (*delete_data)(void *));
int
list_delete_index(Link **list, int index,
void (*delete_data)(void *));
/* delete all that mach with data */
int
list_delete_all_item(Link **list, void *data,
int (*compare)(void *, void*),
void (*delete_data)(void *));
/* will remove from chain */
int
list_remove_index(Link **list, int index);
int
list_remove_item(Link **list, void *data,
int (*compare)(void *, void*));
/* append list b to a */
int
list_append(Link **list_a, Link * list_b);
/* add null terminated array to list */
int
list_add_array(Link ** list, void **array);
/* add length of array to list*/
int
list_add_array_length(Link ** list, void **array, int length);
Link *
list_get(Link * list, void * data,
int (*compare)(void *, void*));
int
list_push(Link ** list, void * data);
void *
list_pull(Link ** list);
#endif