Что-то в этом духе (это двусвязный список).
Код | struct data { .... int prev, next; };
struct data ArrayData[100];
int input_data(void) { int i = 0; while( i < 100) { fill_data(ArrayData + i); if ( i > 0 ) ArrayData[i - 1].next = i; ArrayData[i].prev = i - 1; //prev = -1 означает что это первый элемент списка ArrayData[i].next = -1; //next = -1 означает что это последний элемент списка ++i; } return i; // число считанных блоков }
struct data * get_data( int i, int first ) { // i - номер желаемой записи, first - индекс первой записи. while( (i--) && ( first >= 0 ) ) first = ArrayData[first].next; return ( first < 0 ) ? NULL : ( ArrayData + first ); }
|
|