Exemple #1
0
node_t *merge_sorted_list(node_t *head1, node_t *head2)
{
	if(head1 == NULL && head2 == NULL)
	{
		return NULL;
	}

	if(head2 == NULL)
	{
		head1 -> next = merge_sorted_list(head1 -> next, head2);
		return head1;
	}

	if(head1 == NULL)
	{
		head2 -> next = merge_sorted_list(head1, head2 -> next);
		return head2;
	}

	if(head1 -> data < head2 -> data)
	{
		 head1 -> next = merge_sorted_list(head1 -> next, head2);
		 return head1;
	}
	else
	{
		head2 -> next = merge_sorted_list(head1, head2 -> next);
		return head2;
	}

}
Exemple #2
0
int main(void)
{
	node_t *a = create_sorted_list(3200);
	node_t *b = create_sorted_list(1600);

	print_list(a);
	print_list(b);

	node_t *c = merge_sorted_list(a, b);

	print_list(c);
	free_list(c);
	/* No need to free a/b, already merged in c */
	return 0;
}
Exemple #3
0
int main(int argc, char** argv)
{
    list_t* list = create_list();
    for (int i=0; i<10; i++) {
        append_list(list, i);
    }

    traverse(list);

    reverse(list);

    traverse(list);

    list_t* foo = create_list();
    list_t* bar = create_list();
    for (int i=0; i<10; i++) {
        append_list(foo, 2*i);
        append_list(bar, 2*i + 1);
    }
    traverse(foo);
    traverse(bar);
    traverse(merge_sorted_list(foo, bar));
    return 0;
}