Exemple #1
0
alist_t *alist_create_with_data(int *data, int len) {
  assert(len <= MAX_SIZE);
  alist_t *p = alist_create();
  memcpy(p->data, data, len * sizeof(int));
  p->len = len;
  return p;
}
Exemple #2
0
int main() {
	AssocList *alist = alist_create((CmpFunc)strcmp);

	alist_put(alist, strdup("John"), strdup("+1-234-567-89-10"));
	alist_put(alist, strdup("Alex"), strdup("911"));
	alist_put(alist, strdup("Mike"), strdup("112"));

	for (;;) {
		char *name = read_string("Enter name, 'q' to exit");
		if (strcmp(name, "q") == 0) {
			break;
		} else {
			char *number = alist_get(alist, name);
            char *update_answer;
			if (number == NULL) {
				printf("%s not found.\n", name);
				update_answer = read_string("Add? [y/n]");
			} else {
				printf("%s: %s\n", name, number);
				update_answer = read_string("Update? [y/n]");
			}
            if (update_answer[0] == 'y' || update_answer[0] == 'Y') {
                number = read_string("Enter phone number");
                alist_put(alist, strdup(name), number);
                printf("%s: %s\n", name, number);
            }
            free(update_answer);
			free(name);
		}
	}

	printf("\nYour phonebook:\n");
	alist_foreach(alist, print_phonebook_entry);

	alist_foreach(alist, free_key_and_value);

	alist_destroy(alist);

	return 0;
}
Exemple #3
0
void
stress_test_alist(int amt)
{
	alist al;
	int i;
	gendata x, y;

	al = alist_create();
	assert(alist_empty(al));

	printf("Creating an association list with %d items...\n", amt);
	for (i = 0; i < amt; ++i) {
		x.num = y.num = i;
		al = alist_insert_uniq(al, x, y, num_eq);

		assert(!alist_empty(al));

		alist_lookup(al, x, num_eq, &y);
		assert(x.num == y.num);
	}

	y.ptr = NULL;
	printf("Walking an association list of %d items...\n", amt);
	alist_walk(al, walker, y);

	printf("Deleting %d items from the association list...\n", amt);
	for (i = 0; i < amt; ++i) {
		/* Inserting an item that's already there should fail */
		x.num = i;
		y.num = i;			/* Value does not matter */
		assert(alist_insert_uniq(al, x, y, num_eq) == NULL);

		al = alist_delete(al, x, num_eq, NULL, NULL);
	}
	assert(alist_empty(al));
	alist_destroy(al, NULL, NULL);
}