29 lines
680 B
C
29 lines
680 B
C
#ifndef ACC_UTIL_LINKLIST_H
|
|
#define ACC_UTIL_LINKLIST_H
|
|
|
|
struct llist_node {
|
|
struct llist_node *nxt;
|
|
};
|
|
|
|
struct linklist {
|
|
int length;
|
|
struct llist_node *head;
|
|
struct llist_node *tail;
|
|
};
|
|
|
|
void llist_init(struct linklist *l);
|
|
void llist_free(struct linklist *l);
|
|
void llist_free_full(struct linklist *l);
|
|
|
|
void llist_pushback(struct linklist *l, void *val);
|
|
void llist_pushback_notnull(struct linklist *l, void *val);
|
|
|
|
void* llist_get(struct linklist *l, int x);
|
|
void llist_set(struct linklist *l, int x, void *val);
|
|
|
|
void llist_insert(struct linklist *l, int x, void *val);
|
|
void* llist_popfront(struct linklist *l);
|
|
void* llist_remove(struct linklist *l, int index);
|
|
|
|
#endif
|