-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlinkedlist.h
49 lines (33 loc) · 1.71 KB
/
linkedlist.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
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#include <stdbool.h>
#include "utils.h"
#include "object.h"
#include "iterator.h"
typedef struct LinkedList LinkedList;
typedef struct LinkedNode LinkedNode;
LinkedList* linkedListInit ( ObjectType * elementType ) ;
LinkedList* linkedListInitWithPrintProperties ( ObjectType * elementType, ListPrintProperties * printProperties);
void linkedListDestroy( LinkedList * linkedList );
void linkedListChangePrintProperties( LinkedList * linkedList, ListPrintProperties * printProperties );
void linkedListPush ( LinkedList * linkedList, void * element );
void* linkedListPop ( LinkedList * linkedList );
void* linkedListPeak ( LinkedList * linkedList );
void linkedListEnqueue( LinkedList * linkedList, void * element );
void* linkedListDequeue( LinkedList * linkedList );
void linkedListPushBack( LinkedList * linkedList, void * element );
void* linkedListPopBack( LinkedList * linkedList );
void* linkedListPeakBack( LinkedList * linkedList );
void linkedListAdd ( LinkedList * linkedList, void * element, int index );
bool linkedListRemove ( LinkedList * linkedList, int i );
bool linkedListRemoveElement ( LinkedList * linkedList, void * element );
void* linkedListGet ( LinkedList * linkedList, int i );
void linkedListClear ( LinkedList * linkedList );
int linkedListGetSize ( LinkedList * linkedList );
void linkedListPrint ( LinkedList * linkedlist );
char* linkedListToString ( LinkedList * linkedlist );
bool linkedListForEach ( LinkedList * linkedList, ForEach forEach, int numArgs, ...);
// Iterator functions
Iterator * linkedListIteratorInit(LinkedList * linkedList);
Iterator * linkedListIteratorInitBack(LinkedList * linkedList);
#endif // LINKEDLIST_H