H-SC COMS 262 - Lecture 15 - Array Lists

Unformatted text preview:

List ImplementationsArray ListsCircular Array ListsAssignmentArray ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentArray ListsLecture 15Section 6.2Robb T. KoetherHampden-Sydney CollegeThu, Feb 19, 2009Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentOutline1List Implementations2Array Lists3Circular Array Lists4AssignmentArray ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentList ImplementationWe will implement lists in a number of ways.As an array.Fixed head.Circular.As a linked list.Singly linked.Doubly linked.Circularly linked.Recursively linked.Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentThe ArrayList ClassDefinition (Array List)An array list is an implementation of the List ADT that usesan array to store the list elements.The ArrayList class is very similar to the Vectrclass.The difference is that the size is adjustable after the listhas been constructed.Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentData MembersArrayList Data Membersint mSize - The number of elements in the list.int capacity - The number of array positionsallocated.T*element - A pointer to the first array element.Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentThe List ElementsThe list elementsa0, . . . , amSize−1are stored in array positions element[0] throughelement[mSize - 1].Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentValidity RequirementsThe object is structurally valid providedcapacity >= 0.mSize >= 0 and mSize <= capacity.If capacity == 0, then element == NULL.If capacity > 0, then element != NULL.Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentThe ArrayList ClassThe ArrayList ClassDownload arraylist.hDownload and run ListTest.cppArray ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentInlining FunctionsDefinition (Inline Functions)An inline function is copied and pasted, with appropriatemodifications, into the calling function, thereby replacing afunction call.A function may be inlined by using the inlinekeyword.inline sqr(int n);Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentInlining FunctionsInlining Functionsinline int sqr(int n){return n*n;}A function may be inlined by using the inlinekeyword.Then, for example,int s = sqr(a);is replaced withint s = a*a;Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentInlining FunctionsInlining Functionstemplate <class T>class ArrayList{public:T getElement(int pos) const{assert(pos >= 0 && pos < mSize);return element[pos];}}A class member function may be inlined by writing itsdefinition within the class definition.Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentThe insert() FunctionThe insert() function mustTest that pos is valid.Test that there is sufficient capacity to add one moreelement. If not, then call setCapacity() to doublethe capacity.Shift the elements with indexes pos to mSize - 1 tothe right one position.Then copy value to index pos.Increment the size of the list.Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentThe insert() FunctionThe insert() Functiontemplate <class T>void ArrayList<T>::insert(int pos, const T& value){assert(pos >= 0 && pos <= mSize);if (mSize == capacity)if (capacity == 0)setCapacity(1);elsesetCapacity(2*capacity);for (int i = mSize - 1; i >= pos; i--)element[i + 1] = element[i];element[pos] = value;mSize++;return;}Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentThe remove() FunctionWhat should the remove() function do?Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array ListsDefinition (Circular Array List)A circular array list is like an ordinary array list, except thatthe elements may wrap around the ends of the array.This makes it much more efficient to add and removeelements from the front end of the list.Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsBegin with an empty list.Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd six elements at the tail (pushBack).10tailheadArray ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd six elements at the tail (pushBack).tail10head45Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd six elements at the tail (pushBack).tail10head45 25Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd six elements at the tail (pushBack).tail10head45 25 90Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd six elements at the tail (pushBack).tail10head45 25 90 15Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd six elements at the tail (pushBack).tail10head45 25 90 15 40Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsDelete three elements from the head (popFront).tailhead45 25 90 15 40Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsDelete three elements from the head (popFront).tailhead25 90 15 40Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsDelete three elements from the head (popFront).tailhead90 15 40Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd one element at the head (pushFront).headtail90 15 4060Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd six elements at the tail (pushBack).headtail90 15 4060 65Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular ArrayListsAssignmentCircular Array Lists DynamicsAdd six elements at the tail (pushBack).headtail90 15 4060 65 90Array ListsRobb T.KoetherList Imple-mentationsArray ListsCircular


View Full Document

H-SC COMS 262 - Lecture 15 - Array Lists

Download Lecture 15 - Array Lists
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture 15 - Array Lists and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 15 - Array Lists 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?