1 #ifndef __ARRAY_H__ 2 #define __ARRAY_H__ 3 4 #include <stdlib.h> 5 #include "status.h" 6 7 #define ARR_LEN 128 8 #define ARR_MAX 512 9 10 typedef enum { 11 IN_ORDER, 12 REVERSED, 13 RANDOM, 14 MAX_SHUFFLE 15 } shuffle_t; 16 17 typedef struct _Arr { 18 int *v; /* array to be sorted */ 19 int *bk; /* copy of the array to be sorted */ 20 size_t len; 21 shuffle_t shuffle_sel; 22 void (*shuffle)(struct _Arr *arr); 23 } Arr; 24 25 static char *const shuffle_t_str[MAX_SHUFFLE] = { 26 "in order", 27 "reversed", 28 "random", 29 }; 30 31 status_t Arr_create(Arr **arr); 32 void Arr_destroy(Arr *arr); 33 34 void arr_random(Arr *arr); 35 void arr_reversed(Arr *arr); 36 void arr_in_order(Arr *arr); 37 38 void arr_restore_from_bk(Arr *arr); 39 void arr_shuffle(Arr *arr); 40 void arr_shuffle_next(Arr *arr); 41 42 #endif