12
12
13
13
// Ενα PriorityQueue είναι pointer σε αυτό το struct
14
14
struct priority_queue {
15
- Vector vector ; // Τα δεδομένα, σε Vector ώστε να έχουμε μεταβλητό μέγεθος χωρίς κόπο
15
+ Vector values ; // Τα δεδομένα, σε Vector ώστε να έχουμε μεταβλητό μέγεθος χωρίς κόπο
16
16
CompareFunc compare ; // Η διάταξη
17
17
DestroyFunc destroy_value ; // Συνάρτηση που καταστρέφει ένα στοιχείο του vector.
18
18
};
@@ -30,7 +30,7 @@ struct priority_queue {
30
30
31
31
static Pointer node_value (PriorityQueue pqueue , int node_id ) {
32
32
// τα node_ids είναι 1-based, το node_id αποθηκεύεται στη θέση node_id - 1
33
- return vector_get_at (pqueue -> vector , node_id - 1 );
33
+ return vector_get_at (pqueue -> values , node_id - 1 );
34
34
}
35
35
36
36
// Ανταλλάσει τις τιμές των κόμβων node_id1 και node_id2
@@ -40,8 +40,8 @@ static void node_swap(PriorityQueue pqueue, int node_id1, int node_id2) {
40
40
Pointer value1 = node_value (pqueue , node_id1 );
41
41
Pointer value2 = node_value (pqueue , node_id2 );
42
42
43
- vector_set_at (pqueue -> vector , node_id1 - 1 , value2 );
44
- vector_set_at (pqueue -> vector , node_id2 - 1 , value1 );
43
+ vector_set_at (pqueue -> values , node_id1 - 1 , value2 );
44
+ vector_set_at (pqueue -> values , node_id2 - 1 , value1 );
45
45
}
46
46
47
47
// Αποκαθιστά την ιδιότητα του σωρού.
@@ -112,7 +112,7 @@ PriorityQueue pqueue_create(CompareFunc compare, DestroyFunc destroy_value, Vect
112
112
// Δημιουργία του vector που αποθηκεύει τα στοιχεία.
113
113
// ΠΡΟΣΟΧΗ: ΔΕΝ περνάμε την destroy_value στο vector!
114
114
// Αν την περάσουμε θα καλείται όταν κάνουμε swap 2 στοιχεία, το οποίο δεν το επιθυμούμε.
115
- pqueue -> vector = vector_create (0 , NULL );
115
+ pqueue -> values = vector_create (0 , NULL );
116
116
117
117
// Αν values != NULL, αρχικοποιούμε το σωρό.
118
118
if (values != NULL )
@@ -122,7 +122,7 @@ PriorityQueue pqueue_create(CompareFunc compare, DestroyFunc destroy_value, Vect
122
122
}
123
123
124
124
int pqueue_size (PriorityQueue pqueue ) {
125
- return vector_size (pqueue -> vector );
125
+ return vector_size (pqueue -> values );
126
126
}
127
127
128
128
Pointer pqueue_max (PriorityQueue pqueue ) {
@@ -131,7 +131,7 @@ Pointer pqueue_max(PriorityQueue pqueue) {
131
131
132
132
void pqueue_insert (PriorityQueue pqueue , Pointer value ) {
133
133
// Προσθέτουμε την τιμή στο τέλος το σωρού
134
- vector_insert_last (pqueue -> vector , value );
134
+ vector_insert_last (pqueue -> values , value );
135
135
136
136
// Ολοι οι κόμβοι ικανοποιούν την ιδιότητα του σωρού εκτός από τον τελευταίο, που μπορεί να είναι
137
137
// μεγαλύτερος από τον πατέρα του. Αρα μπορούμε να επαναφέρουμε την ιδιότητα του σωρού καλώντας
@@ -149,7 +149,7 @@ void pqueue_remove_max(PriorityQueue pqueue) {
149
149
150
150
// Αντικαθιστούμε τον πρώτο κόμβο με τον τελευταίο και αφαιρούμε τον τελευταίο
151
151
node_swap (pqueue , 1 , last_node );
152
- vector_remove_last (pqueue -> vector );
152
+ vector_remove_last (pqueue -> values );
153
153
154
154
// Ολοι οι κόμβοι ικανοποιούν την ιδιότητα του σωρού εκτός από τη νέα ρίζα
155
155
// που μπορεί να είναι μικρότερη από κάποιο παιδί της. Αρα μπορούμε να
@@ -166,8 +166,8 @@ DestroyFunc pqueue_set_destroy_value(PriorityQueue pqueue, DestroyFunc destroy_v
166
166
void pqueue_destroy (PriorityQueue pqueue ) {
167
167
// Αντί να κάνουμε εμείς destroy τα στοιχεία, είναι απλούστερο να
168
168
// προσθέσουμε τη destroy_value στο vector ώστε να κληθεί κατά το vector_destroy.
169
- vector_set_destroy_value (pqueue -> vector , pqueue -> destroy_value );
170
- vector_destroy (pqueue -> vector );
169
+ vector_set_destroy_value (pqueue -> values , pqueue -> destroy_value );
170
+ vector_destroy (pqueue -> values );
171
171
172
172
free (pqueue );
173
173
}
0 commit comments