struct _list { int next; int row; int column; void *video_region; int region_size; } #define LIST_MEMBERS 20 struct _list list[LIST_MEMBERS]; int remove_from_list(int offset) { int i; for(i = 0; i < LIST_MEMBERS; i++) if(list[i].next == offset) { list[i].next = list[offset].next; list[offset].next = 0xffff; if(list[offset].video_region) free(list[offset].video_region); return TRUE; } return FALSE; } . . if(remove_from_list(5)) printf("\nList member 5 successfully removed from list"); . .