made work: inserting a value in a list at a given index

This commit is contained in:
Odweta
2023-12-24 12:55:56 +01:00
parent 342ad58b51
commit 7233f8c8af
5 changed files with 97 additions and 83 deletions
+52
View File
@@ -110,3 +110,55 @@ listPop(list_t* l) {
return NULL;
}
}
void
listInsertAt(list_t* l, int index, dataType_e type, void* element) {
if (l->size == 0) {
switch (type) {
case INT:
listPush(l, INT, element);
break;
case FLOAT:
listPush(l, FLOAT, element);
break;
case CHAR:
listPush(l, CHAR, element);
break;
case VECTOR:
listPush(l, VECTOR, element);
break;
}
} else {
vector_t* newVec;
switch (type) {
case INT:
newVec = vectorInit(INT);
vectorPush(newVec, element);
vectorInsertAt((vector_t *)l->data, index, newVec);
break;
case FLOAT:
newVec = vectorInit(FLOAT);
vectorPush(newVec, element);
vectorInsertAt((vector_t *)l->data, index, newVec);
break;
case CHAR:
newVec = vectorInit(CHAR);
vectorPush(newVec, element);
vectorInsertAt((vector_t *)l->data, index, newVec);
break;
case VECTOR:
newVec = vectorInit(VECTOR);
vectorPush(newVec, element);
vectorInsertAt((vector_t *)l->data, index, newVec);
break;
default:
fprintf(stderr, "specify a valid vector type\n");
exit(EXIT_FAILURE);
}
l->size += 1;
if (l->size == l->capacity) {
l->capacity *= 2;
}
}
}