예제 #1
0
//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;	
}
예제 #2
0
파일: queue.c 프로젝트: dkuner/dict
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;
}
예제 #3
0
파일: buddy.c 프로젝트: pjbroad/other-life
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;
}
예제 #4
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;
}