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++; }
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; }
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; }
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); } }