When you want to add an element to a particular position in an array, shift all
elements in and above that position up one position.
Using subscripts
void insert(int a[], int& n, int maxsize, int index, int key) {
// function:
// Inserts key at a[index], shifting other values up as necessary.
// Updates number of elements in a.
// parameters:
// a inout array of values.
// n inout number of values in a, a[0]..a[n-1]
// maxsize in maximum number of elements that can fit in a
// index in position to insert at
// key in value to insert.
// returns: nothing
if (index < 0 || index > maxsize-1) {
; // ERROR - return special value, halt, throw exception, or expand array.
}
// Move all elements up one position. i is destination.
for (int i=n; i>index; i--) {
a[i] = a[i-1];
}
a[index] = key; // put value in vacated position
n++; // update count of items in a
return;
}
Using pointers
void insert(int* a, int& n, int maxsize, int index, int key) {
if (index < 0 || index > maxsize-1) {
;// ERROR - return special value, halt, throw exception, or expand array.
}
int* dest = a+index;
int* tail = a+n;
while (tail > dest) {
*tail = *(tail-1);
tail--;
}
*dest = key; // put value in vacated position
n++; // update count of items in a
return;
}