#include #include typedef struct { int * elements; int size; } List; void print_array( int *, int ); List find_all_inds( int *, int, int ); int main() { int * result; int numbers[] = { 1, 3, 5, 7, 9 }; int values[] = { 1, 3, 1, 1, 3, 5, 1, 3, 7, 9 }; List list; print_array( numbers, 5 ); list = find_all_inds( values, 10, 1 ); printf( "size: %d\n", list.size ); printf( "\n" ); free( list.elements ); list = find_all_inds( values, 10, 3 ); printf( "size: %d\n", list.size ); printf( "\n" ); } List find_all_inds( int * list, int N, int value ) { int i, size; int * elements; List inds; for ( i = 0, size = 0; i < N; i++ ) { if ( *( list + i ) == value ) { // printf( "%d", i ); size++; } } elements = malloc( size * sizeof( int ) ); inds.elements = elements; inds.size = size; for ( i = 0; i < N; i++ ) { if ( *( list + i ) == value ) { *elements = i; elements++; } } return inds; } void print_array( int * i_ptr, int N ) { int i = 0; printf( "\n" ); for ( i = 0; i < N; i++ ) { printf( "#%d: %d\n", i, *( i_ptr + i ) ); } printf( "\n" ); for ( i = 0; i < N; i++, i_ptr++ ) { printf( "#%d: %d\n", i, *i_ptr ); } printf( "#%d: %d\n", i, *i_ptr ); printf( "\n" ); }