-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlist.h
More file actions
54 lines (44 loc) · 1.22 KB
/
Copy pathlist.h
File metadata and controls
54 lines (44 loc) · 1.22 KB
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
/*
* Operatii pe liste dublu inlantuite generice.
* Copyright: Sima Alexandru (312CA) 2023
*/
#ifndef __LIST_H
#define __LIST_H
#include <stdint.h>
typedef struct list_t list_t;
struct list_t {
void *data;
list_t *prev;
list_t *next;
};
/*
* Aloca un nou nod de lista, care contine informatia `data`.
*/
list_t *encapsulate(void *data);
/*
* Returneaza ultimul element al listei `list` (sau NULL daca nu exista).
*/
list_t *last_item(list_t *list);
/*
* Insereaza in `list` nodul `item` dupa `node.
*/
void insert_after(list_t **list, list_t *node, list_t *item);
/*
* Adauga la finalul listei `dest`, elementele din `source`.
*/
void merge_lists(list_t *dest, list_t *source);
/*
* Sterge `item` din `list`, refacand legaturile intre celelalte
* noduri si actualizeaza capul listei daca este necesar.
*/
void remove_item(list_t **list, list_t *item);
/*
* Elibereaza toate nodurile din `list`, aplicand `free_func(nod)`
* pentru a elibera valorile stocate in noduri.
*/
void clear_list(list_t *list, void (*free_func)(void *item));
/*
* Aplică funcția `func` cu argumentele `args` pe fiecare element din `list`.
*/
void apply_func(list_t *list, void (*func)(void *data, void *args), void *args);
#endif // __LIST_H