示例#1
0
void slist_append(slist *l, snode *node)
{
	snode* newnode;

	newnode = malloc(sizeof(snode));

	if (node->str)
		newnode->str = node->str;
	else
		newnode->str = NULL;

	if (node->key)
		newnode->key = node->key;
	else
		newnode->key = NULL;

	newnode->hits = node->hits;
	newnode->next = NULL;

	// Make sure cursor is at the end
	slist_last(l);

	// if we are at top, fix this up
	if (l->head == NULL)
		l->head = newnode;
	else	// Otherwise add pointer to newnode
		l->cur->next = newnode;

	// make newnode current
	l->cur = newnode;
	l->cnt++;
}
示例#2
0
文件: queue.c 项目: tomyo/Dinic
Queue *queue_copy (Queue *queue) {
    Queue *new_queue = NULL;

    /* Precondition */
    assert(queue != NULL);

    new_queue = calloc(1, sizeof(*new_queue));

    if (new_queue != NULL) {
        new_queue->head = slist_copy(queue->head);
        new_queue->tail = slist_last(new_queue->head);
        new_queue->length = queue->length;
    }

    return new_queue;
}
示例#3
0
SList *
slist_append(SList *list, void *data)
	{
	SList *new_list;
	SList *last;

	if ((new_list = calloc(1, sizeof(SList))) != NULL)
		new_list->data = data;

	if (list)
		{
		last = slist_last(list);
		last->next = new_list;
		}
	else
		list = new_list;
	return list;
	}
示例#4
0
文件: librcps.c 项目: KDE/calligra
void add_individual(struct rcps_individual *ind, struct rcps_population *pop) {
	struct slist_node *n;
	struct rcps_individual *i;

	n = slist_node_new(ind);
	slist_add(pop->individuals, n);
	++pop->size;
	// what is this? (da)
	while (slist_count(pop->individuals) > pop->size) {
		n = slist_last(pop->individuals);
		if (!n) {
			// XXX what the f**k is that?
			fprintf(stderr, "uhu, no one there?\n");
		}
		slist_unlink(pop->individuals, n);
		i = (struct rcps_individual*)slist_node_getdata(n);
		slist_node_free(n, NULL);
		free(i->genome.schedule);
		free(i->genome.modes);
		free(i->genome.alternatives);
		free(i);
	}
}