This tip demonstrates how to add an element to a particular position in an array and how to 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 expandarray. } // 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 expandarray. } 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;}