//rimozione di un elemento distinto dalla "head" e dalla tail in una "Queue" e senza aggiornamento della tail void queue_delete(list *my_list, node** current_node, void (*free_object)(void*)){ if (my_list->head == NULL || my_list->tail == NULL) { return; } queue_delete_node(current_node, free_object); (my_list->size)--; return; }
void queue_sort(Queue *queue, int (*compare)(const void *, const void *)) { struct node *n; Queue tmp; queue_init(&tmp); while(! queue_is_empty(queue)) { n = find_min_node(queue, compare); queue_delete_node(queue, n); queue_insert_node(&tmp, n); } queue->head = tmp.head; queue->tail = tmp.tail; }
int accept_buddy_console_command(const char *name) { if (!queue_isempty(buddy_request_queue)) { node_t *node = queue_front_node(buddy_request_queue); /* Search for the node in the queue */ while(node != NULL) { if(strcasecmp(name, node->data) == 0) { /* This is the node we're looking for, delete it */ queue_delete_node(buddy_request_queue, node); return 1; } node = node->next; } } return 0; }
int command_accept_buddy(char *text, int len) { /* This command is here to make sure the requests queue is up to date */ text = getparams(text); /* Make sure a name is given */ if(*text && !queue_isempty(buddy_request_queue)) { node_t *node = queue_front_node(buddy_request_queue); /* Search for the node in the queue */ while(node != NULL) { if(strcasecmp(text, node->data) == 0) { /* This is the node we're looking for, delete it */ queue_delete_node(buddy_request_queue, node); break; } node = node->next; } } return 0; }