struct IntList { int size; int* data; }; IntList* listNewInt() { IntList* list = new IntList[1]; list->size = 0; list->data = new int[4]; return list; } void listAdd(IntList* list, int i) { int l = length(list->data); if(list->size >= l) { int* newData = new int[l * 2]; for(int i = 0; i < l; i++) { newData[i] = list->data[i]; } delete list->data; list->data = newData; } list->data[list->size] = i; list->size++; } int listGetLength(IntList* list) { return list->size; } int listGetIndex(IntList* list, int index) { return list->data[index]; } void listDelete(IntList* list) { delete list->data; delete list; } void main() { IntList* list = listNewInt(); for(int i = 0; i < 5; i++) { listAdd(list, i * 50 + 3); } for(int i = 0; i < listGetLength(list); i++) { print listGetIndex(list, i); } listDelete(list); }