@{Array&} {operator=(Array& a)} {Allocate space large enough to hold the elements of {\em a}, then copy its contents.}@ @{ContainerNode *} {insert(Item item)} {Insert {\em item} into the 0'th cell of \Array,\ shifting one cell forward any contiguous block of elements starting with that cell. If this operation would extend the active range of cells beyond the current allocation, reallocate the \Array\ and recopy the elements. Note: The return type is {\em ContainerNode*} so that this method may be called from \Container\ pointers or references. However, since there is no packaging node structure in \Array,\ a NULL pointer is returned. $O(n)$}@ @{ContainerNode *} {append(Item item)} {The same as insert(Item item), except that the new item is added to the empty cell adjacent to the cell in the array's active range of largest index.}@ @{void} {remove(Item item)} {Remove the item from \Array\ if it is there. Shift the elements of larger index to fill in the vacancy left by the removal. $O(n)$ }@ @{Item} {start()} {Returns the address of the 0'th element of the \Array. $O(1)$}@ @{Item} {get()} {Return the last element in the active range of the array and remove it. $O(1)$ {\em Caution:} If the \Array stores no elements, this routine returns an uninitialized {\em Item} object.}@ @{void} {clear()} {Remove all items from the active range of the \Array. $O(n)$}@ @{Bool} {memberQ(Item& item)} {Is item in the array or not? $O(n)$}@ @{Bool} {sortedQ() const} {Return FALSE. $O(1)$.}@ @{int} {order()} {Return the number of cells allocated in the array. $O(1)$}@ @{int} {size()} {Return the active range of elements, defined to be ($m-0$, where $m$ is the largest index of a referenced cell. $O(1)$}@ @{Item&} {operator[] (int ix)} {Return item of index ix. Bounds checking is done, and the element count is updated if the cell referenced has a larger index than that of any previous reference. $O(1)$}@ @{int} {search(Item)} {Search for an item in the active range of the array and return its index if it is found. Return -1 otherwise $O(n)$ .}@ @{Item} {min()} {The \Container\ method is redefined since faster iteration is possible in this class. $O(n)$ }@ @{Item} {max()} {The \Container\ method is redefined since faster iteration is possible in this class. $O(n)$ }@ @{ostream&} {display(ostream& os)} {Output the list to the output stream {\em os}. Uses {\em Container::displayItem(...)} to display each element. $O(n)$}@