osurs  0.0.1
linkedlist.h
Go to the documentation of this file.
1 
23 #ifndef OSURS_DS_LINKEDLIST_H_
24 #define OSURS_DS_LINKEDLIST_H_
25 
26 #include <stddef.h>
27 
35 typedef struct ListNode {
36  struct ListNode* prev;
37  struct ListNode* next;
38  void* data;
40 
49 typedef struct LinkedList {
52  size_t size;
54 
63 void linked_list_init(LinkedList* list);
64 
75 
84 void linked_list_add_first(LinkedList* list, void* data);
85 
94 void linked_list_add_last(LinkedList* list, void* data);
95 
106 
117 
127 void* linked_list_get_first(LinkedList* list);
128 
138 void* linked_list_get_last(LinkedList* list);
139 
148 void linked_list_clear(LinkedList* list);
149 
158 void linked_list_free(LinkedList* list);
159 
160 #endif // OSURS_DS_LINKEDLIST_H_
void linked_list_free(LinkedList *list)
Free a LinkedList structure.
Definition: linkedlist.c:125
struct ListNode ListNode
Linked list node.
struct LinkedList LinkedList
Linked list.
void * linked_list_get_first(LinkedList *list)
Get the first element of a LinkedList.
Definition: linkedlist.c:105
void * linked_list_remove_first(LinkedList *list)
Remove the first element from a LinkedList.
Definition: linkedlist.c:67
void * linked_list_get_last(LinkedList *list)
Get the last element of a LinkedList.
Definition: linkedlist.c:112
void * linked_list_remove_last(LinkedList *list)
Remove the last element from a LinkedList.
Definition: linkedlist.c:86
void linked_list_init(LinkedList *list)
Initialize a LinkedList structure.
Definition: linkedlist.c:13
LinkedList * linked_list_create()
Create a new LinkedList structure.
Definition: linkedlist.c:19
void linked_list_add_last(LinkedList *list, void *data)
Add an element to the end of a LinkedList.
Definition: linkedlist.c:48
void linked_list_clear(LinkedList *list)
Clear all elements from a LinkedList.
Definition: linkedlist.c:119
void linked_list_add_first(LinkedList *list, void *data)
Add an element to the beginning of a LinkedList.
Definition: linkedlist.c:29
Linked list.
Definition: linkedlist.h:49
ListNode * tail
Definition: linkedlist.h:51
size_t size
Definition: linkedlist.h:52
ListNode * head
Definition: linkedlist.h:50
Linked list node.
Definition: linkedlist.h:35
void * data
Definition: linkedlist.h:38
struct ListNode * prev
Definition: linkedlist.h:36
struct ListNode * next
Definition: linkedlist.h:37