-
Notifications
You must be signed in to change notification settings - Fork 0
/
list.h
109 lines (64 loc) · 2.09 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#ifndef _LIST_H
#define _LIST_H
#define BOOL int
#define FALSE 0
#define TRUE (!FALSE)
#define FORNITORE 0
#define LETTORE 1
/*** Elemento base contenuto nella lista ***/
typedef struct
{
double value;
char titolo[21];
int quantita;
int tipo; // FORNITORE o LETTORE (0 o 1)
int fd; // descrittore del socket
}
itemType;
/* Nodo della lista (per uso interno) */
struct LINKED_LIST_NODE
{
itemType item;
struct LINKED_LIST_NODE *next;
};
/* Per semplicità... */
typedef struct LINKED_LIST_NODE NODE;
/* La lista non è altro che il puntatore associato al primo elemento */
typedef NODE *LIST;
/*** Costruttore/Distruttore ***/
/* Inizializza una nuova lista */
LIST NewList();
/* Azzera la lista */
LIST DeleteList( LIST l );
/*** Predicati ***/
/* ritorna TRUE se la lista e' vuota */
bool isEmpty( LIST l );
/* ritorna il numero di elementi presenti nella lista */
int getLength( LIST l );
/*** Selettori ***/
/* Restituisce l'elemento in testa alla lista, senza modificarla */
itemType getHead( LIST l );
/* Restituisce l'elemento in coda alla lista, senza modificarla */
itemType getTail( LIST l );
/* Cerca l'elemento item nella lista e ne restituisce il puntatore - TODO
ritorna NULL se non lo trova */
itemType* Find( LIST l, itemType item );
/*** Trasformatori ***/
/* Inserisce un elemento nella prima posizione della lista - TODO */
LIST EnqueueFirst(LIST l, itemType item );
/* Inserisce un elemento nell'ultima posizione della lista */
LIST EnqueueLast(LIST l, itemType item );
/* Inserisce un elemento mantenendo la lista ordinata - TODO */
LIST EnqueueOrdered(LIST l, itemType item );
/* Toglie il primo elemento della lista (se non e' vuota) */
LIST DequeueFirst( LIST l );
/* Toglie l'ultimo elemento della lista (se non e' vuota) - TODO */
LIST DequeueLast( LIST l );
/* Toglie l'elemento item dalla lista (se e' presente) */
LIST Dequeue(LIST l, itemType item );
/*** Stampe ***/
/* Stampa a video un elemento della lista */
void PrintItem( itemType item );
/* Stampa a video la lista (esegue PrintItem() su tutti gli elementi) */
void PrintList( LIST l );
#endif