Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dr. Liu1 Chapter 3 Array-Based Lists. Dr. Liu2 Chapter Objectives Learn about lists Explore how various operations, such as search, insert, and remove,

Similar presentations


Presentation on theme: "Dr. Liu1 Chapter 3 Array-Based Lists. Dr. Liu2 Chapter Objectives Learn about lists Explore how various operations, such as search, insert, and remove,"— Presentation transcript:

1 Dr. Liu1 Chapter 3 Array-Based Lists

2 Dr. Liu2 Chapter Objectives Learn about lists Explore how various operations, such as search, insert, and remove, on lists are implemented Learn how to design and implement a generic class to process various types of lists Become aware of the class Vector

3 Dr. Liu3 Array-Based Lists List: A collection of elements of the same type Length of list is number of elements in list

4 Dr. Liu4 Operations Performed on a List Create the list: initialize to an empty state Determine whether the list is empty Determine whether the list is full Find the size of the list Destroy (clear) the list Determine whether an item is the same as a given list element

5 Dr. Liu5 Operations Performed on a List Insert an item in the list at the specified location Remove an item from the list at the specified location Replace an item at the specified location with another item Retrieve an item from the list at the specified location Search the list for a given item

6 Dr. Liu6 Type of List Elements class Object directly or indirectly becomes a superclass of every Java class, user defined or built in Reference variable of Object type can refer to any object of any class class DataElement, superclass of every class specifying data type of list elements Abstract methods of class DataElement: equals, compareTo, makeCopy, and getCopy

7 Dr. Liu7 Type of List Elements

8 Dr. Liu8 Type of List Elements class IntElement used when list of integers is manipulated class DoubleElement used when list of decimal numbers is manipulated class StringElement, designed in chapter, used when list of strings is manipulated

9 Dr. Liu9 class IntElement

10 Dr. Liu10 class StringElement

11 Dr. Liu11 class ArrayListClass An abstract class Is superclass of the classes that implement a list Has three instance variables –length: specifies the number of elements currently in the list –maxSize: specifies the maximum number of elements that can be processed by the list –list: an array of reference variables

12 Dr. Liu12 class ArrayListClass

13 Dr. Liu13 Definitions of Nonabstract Methods of ArrayListClass public boolean isEmpty() { return (length == 0); } public boolean isFull() { return (length == maxSize); } public int listSize() { return length; } public int maxListSize() { return maxSize; }

14 Dr. Liu14 Definitions of Nonabstract Methods of ArrayListClass public void print() { for(int i = 0; i < length; i++) System.out.print(list[i] + ); System.out.println(); } public boolean isItemAtEqual(int location, DataElement item) { return (list[location].equals(item)); }

15 Dr. Liu15 Definitions of Nonabstract Methods of ArrayListClass public void insertAt(int location, DataElement insertItem) { if(location = maxSize) System.err.println(The position of the item to + be inserted is out of range); else if(length >= maxSize) //list is full System.err.println(Cannot insert in a full list.); else { for(int i = length; i > location; i--) list[i] = list[i - 1]; //move the elements down list[location] = insertItem.getCopy(); //insert the //item at the specified position length++; //increment the length } }//end insertAt

16 Dr. Liu16 Definitions of Nonabstract Methods of ArrayListClass public void insertEnd(DataElement insertItem) { if(length >= maxSize) //the list is full System.err.println(Cannot insert in a full list.); else { list[length] = insertItem.getCopy(); //insert item //at end length++; //increment the length } }//end insertEnd

17 Dr. Liu17 Definitions of Nonabstract Methods of ArrayListClass public void removeAt(int location) { if(location = length) System.err.println(The location of the item to + be removed is out of range.); else { for(int i = location; i < length - 1; i++) list[i] = list[i + 1]; list[length - 1] = null; length--; } }//end removeAt

18 Dr. Liu18 Definitions of Nonabstract Methods of ArrayListClass public DataElement retrieveAt(int location) { if(location = length) { System.err.println("The location of the item to be " + "retrieved is out of range."); return null; } else return list[location].getCopy(); }//end retrieveAt

19 Dr. Liu19 Definitions of Nonabstract Methods of ArrayListClass public void replaceAt(int location, DataElement repItem) { if(location = length) System.err.println(The location of the item to + be replaced is out of range.); else list[location].makeCopy(repItem); }//end replaceAt public void clearList() { for(int i = 0; i < length; i++) list[i] = null; length = 0; System.gc(); }//end clearList

20 Dr. Liu20 Definition of ArrayListClass public abstract class ArrayListClass { protected int length; //to store the length //of the list protected int maxSize; //to store the maximum //size of the list protected DataElement[] list; //array to hold //list elements //Place the definitions of the instance // methods and abstract methods here. }

21 Dr. Liu21 Example testProg.cpp arrayListType intList(100); intList.insertAt(counter, number); intList.print(); intList.remove(number);

22 Dr. Liu22 Array-based List example p.182 Define class arrayListType Bool isEmpty(); Bool isFull(); Int listSize(); Bool isItemAtEqual(…); Void insertAt(….); RemoveAt(…)

23 Dr. Liu23 Search Necessary components to search a list: –Array containing the list –Length of the list –Item for which you are searching After search completed: –If item found, report success, return location in array –If item not found, report failure

24 Dr. Liu24 Search public int seqSearch(DataElement searchItem) { int loc; boolean found = false; for(loc = 0; loc < length; loc++) if(list[loc].equals(searchItem)) { found = true; break; } if(found) return loc; else return -1; }//end seqSearch

25 Dr. Liu25 Insert and Remove Insert –Inserts a new item in the list –Uses method seqSearch to determine whether insertItem is already in list Remove –deletes an item from the list –uses the methods seqSearch and removeAt to remove an item from the list

26 Dr. Liu26 Insert public void insert(DataElement insertItem) { int loc; if(length == 0) //list is empty list[length++] = insertItem; //insert the item and //increment the length else if(length == maxSize) System.err.println(Cannot insert in a full list.); else { loc = seqSearch(insertItem); if(loc == -1) //the item to be inserted //does not exist in the list list[length++] = insertItem.getCopy(); else System.err.println(The item to be inserted is + already in the list. No + duplicates are allowed.); } }//end insert

27 Dr. Liu27 Remove public void remove(DataElement removeItem) { int loc; if(length == 0) System.err.println(Cannot delete from an empty list.); else { loc = seqSearch(removeItem); if(loc != -1) removeAt(loc); else System.out.println(The item to be deleted is + not in the list.); } }//end remove

28 Dr. Liu28 Time Complexity of List Operations

29 Dr. Liu29 Vectors Class Vector can be used to implement a list Unlike array, size of Vector object can grow/shrink during program execution Do not need to worry about number of data elements in vector We will discuss this topic in different time.

30 Dr. Liu30 Programming Example: Polynomials Purpose: To design and implement the class Polynomial to perform various polynomial operations in a program Program implements the following polynomial operations: 1. Evaluate a polynomial at a given value 2. Add polynomials 3. Subtract polynomials 4. Multiply polynomials

31 Dr. Liu31 Programming Example: Polynomials

32 Dr. Liu32 Programming Example: Polynomials

33 Dr. Liu33 Chapter Summary Operations performed on a list Type of list elements Abstract class DataElement Classes IntElement, DoubleElement, StringElement class ArrayListClass –Definitions of Nonabstract Methods of ArrayListClass –Definition of ArrayListClass

34 Dr. Liu34 Chapter Summary Implementations of search, insert and remove Time Complexity of List Operations Vectors –Members of the class Vector, will discuss in next chapter. Programming examples – ArrayList Programming Assignment – Exercise 6 : modify progmming example to include RemoveAll function.


Download ppt "Dr. Liu1 Chapter 3 Array-Based Lists. Dr. Liu2 Chapter Objectives Learn about lists Explore how various operations, such as search, insert, and remove,"

Similar presentations


Ads by Google