made work: inserting a value in a list at a given index
This commit is contained in:
+52
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user