-
Notifications
You must be signed in to change notification settings - Fork 1
/
list.h
58 lines (46 loc) · 1.47 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
#ifndef LIST_H
#define LIST_H
//LIST OF DOUBLES MODULE
//List Object
typedef struct List List;
//Node of list
typedef struct Node Node;
/************************************************
*create and initializing list *
*Rerturn NULL if memory allocation failed *
*else, return ptr to List (should be free) *
*add function: enter p1+p2 into p1 *
*sub function: enter p1-p2 into p1 *
*div function: return pointer to p1/p2 *
************************************************/
extern List* createList(void (*add)(void*, void*),
void (*sub)(void*, void*),
void* (*div)(void*, void*),
void (*destroy)(void* data));
//delete all list objects
extern void destroyList(List*);
/************************************************
*add Node before the Node sent *
*if Node* ptr is NULL - add Node to the end of *
list *
*Rerturn 0 if memory allocation failed *
*else return 1 *
************************************************/
extern int addListNode(List*, void*, Node*);
//delete Node from list
extern void deleteListNode(List*, Node*);
//return list length
extern int getListLength(List*);
//return ptr to list start
extern Node* getListFirst(List*);
//return ptr to list end
extern Node* getListLast(List*);
//return ptr to next object
extern Node* getListNext(Node*);
//return ptr to prev object
extern Node* getListPrev(Node*);
//return Node data
extern void* getNodeData(Node*);
//return list average
extern void* getListAverage(List*);
#endif