Example #1
0
List *List_merge(List *left, List *right, List_compare cmp) {
	List *result = List_create();
	void *val = NULL;

	while(List_count(left) != 0 && List_count(right) != 0) {
		if(cmp(List_first(left), List_first(right)) <= 0) {
			val = List_shift(left);
            List_push(result, val);
		} else {
			val = List_shift(right);
            List_push(result, val);
		}
	}

	while(List_count(left) != 0) {
		val = List_shift(left);
        List_push(result, val);
	}

	while(List_count(right) != 0) {
		val = List_shift(right);
		List_push(result, val);
	}

	return result;
}
char *test_shift() {
  mu_assert(List_count(list) != 0, "Wrong count before shift");

  char *val = List_shift(list);
  mu_assert(val = test3, "Wrong value on shift");

  val = List_shift(list);
  mu_assert(val == test1, "Wrong value on shift");
  mu_assert(List_count(list) == 0, "Wrong count after shift");

  return NULL;
}
Example #3
0
char *test_shift()
{
	List_shift(list, test1);
	mu_assert(List_first(list) == test1, "Wrong first value");

	List_shift(list, test2);
	mu_assert(List_first(list) == test2, "Wrong first value");

	List_shift(list, test3);
	mu_assert(List_first(list) == test3, "Wrong last value");
	mu_assert(List_count(list) == 3, "Wrong count");

	return NULL;
}
Example #4
0
void push_shift(List *list) {
    List_push(list, 12);
    List_push(list, 7);
    List_push(list, 2);
    assert(List_index(list, 0)->data == 12);
    assert(List_index(list, 1)->data == 7);
    assert(List_first(list)->data == 12);
    assert(List_last(list)->data == 2);
    List_shift(list);
    assert(List_first(list)->data == 7);
    List_shift(list);
    assert(List_first(list)->data == 2);
    List_shift(list);
    assert(List_first(list) == NULL);
}
Example #5
0
inline List *List_merge(List *left, List *right, List_compare cmp)
{
	List *result = List_create();
	void *val = NULL;

	while(List_count(left) > 0 || List_count(right) > 0) {
		if(List_count(left) > 0 && List_count(right) > 0) {
			if(cmp(List_first(left), List_first(right)) <= 0) {
				val = List_shift(left);
			} else {
				val = List_shift(right);
			}
			List_push(result, val);
		} else if(List_count(left) > 0) {
			List_join(result, left);
		} else if(List_count(right) > 0) {
			List_join(result, right);
		}
	}

	return result;
}
Example #6
0
static List *reconstruct_path(Node *node)
{
  List *path = List_create();

  while(node) {
    if(node->came_from) {
      Point *p = Point_create(node->point->x, node->point->y, node->point->z);
      List_shift(path, p);
    }

    node = node->came_from;
  }

  return path;
};
char *test_unshift_shift()
{
    List_unshift(list, tv1);
    mu_assert(List_first(list) == tv1, "Bad first value.");

    List_unshift(list, tv2);
    mu_assert(List_first(list) == tv2, "Bad first value.");

    List_unshift(list, tv3);
    mu_assert(List_first(list) == tv3, "Bad first value.");
    mu_assert(List_size(list) == 3, "Wrong size");

    char *out = List_shift(list);
    mu_assert(out == tv3, "Bad shifted value.");

    out = List_shift(list);
    mu_assert(out == tv2, "Bad shifted value.");

    out = List_shift(list);
    mu_assert(out == tv1, "Bad shifted value.");
    mu_assert(List_size(list) == 0, "Wrong size");

    return NULL;
}