Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 40

Chapter 3

Array-Based Lists

Data Structures Using Java 1


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

Data Structures Using Java 2


Array-Based Lists
• List: A collection of elements of the same
type
• Length of list is number of elements in list

Data Structures Using Java 3


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
Data Structures Using Java 4
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

Data Structures Using Java 5


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

Data Structures Using Java 6


Type of List Elements

Data Structures Using Java 7


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

Data Structures Using Java 8


class IntElement

Data Structures Using Java 9


class StringElement

Data Structures Using Java 10


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

Data Structures Using Java 11


class ArrayListClass

Data Structures Using Java 12


Definitions of Nonabstract
Methods of ArrayListClass
public boolean isEmpty() public int listSize()
{ {
return (length == 0); return length;
} }

public boolean isFull() public int maxListSize()


{ {
return (length == maxSize); return maxSize;
} }

Data Structures Using Java 13


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));
}
Data Structures Using Java 14
Definitions of Nonabstract
Methods of ArrayListClass
public void insertAt(int location, DataElement insertItem)
{
if(location < 0 || 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

Data Structures Using Java 15


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

Data Structures Using Java 16


Definitions of Nonabstract
Methods of ArrayListClass
public void removeAt(int location)
{
if(location < 0 || 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

Data Structures Using Java 17


Definitions of Nonabstract
Methods of ArrayListClass
public DataElement retrieveAt(int location)
{
if(location < 0 || 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

Data Structures Using Java 18


Definitions of Nonabstract
Methods of ArrayListClass
public void replaceAt(int location, DataElement repItem)
{
if(location < 0 || 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

Data Structures Using Java 19


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.
}

Data Structures Using Java 20


Unordered List
• class UnorderedArrayList is a subclass of
the class ArrayListClass
• Elements are not necessarily sorted
• class UnorderedList implements operations
search, insert, and remove

Data Structures Using Java 21


class UnorderedArrayList

Data Structures Using Java 22


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”

Data Structures Using Java 23


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
Data Structures Using Java 24
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
Data Structures Using Java 25
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
Data Structures Using Java 26
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

Data Structures Using Java 27


Time Complexity of List
Operations

Data Structures Using Java 28


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

Data Structures Using Java 29


Members of the class Vector
• protected int elementCount;
• protected Object[] elementData;

• public Vector()
• public Vector (int size)
• public void addElement (Object insertObj)
• public void insertElementAt (Object insertObj, int index)
• public Object clone ( )
• public boolean contains (Object obj)
• public boolean contains (Object obj)

Data Structures Using Java 30


Members of the class Vector
• public void copyInto (Object[] dest)
• public Object elementAt (int index)
• public Object firstElement ()
• public Object lastElement ()
• public int indexOf (Object obj)
• public int indexOf (Object obj, int index)
• public boolean isEmpty ()
• public int lastIndexOf (Object obj)
• public int lastIndexOf (Object obj)

Data Structures Using Java 31


Members of the class Vector
• public int lastIndexOf (Object item, int index)
• public void removeAllElements ( )
• public boolean removeElement (Object obj)
• public void removeElementAt (int index)
• public void setElementAt (Object obj, int index)
• public int size ( )
• public String toString ( )

Data Structures Using Java 32


Vectors
• Every element of Vector object is reference
variable of type Object
• To add element into Vector object
– Create appropriate object
– Store data into object
– Store address of object holding data into Vector
object element

Data Structures Using Java 33


Vector StringList
stringList.addElement(“Spring”);
stringList.addElement(“Summer”);
stringList.addElement(“Fall”);
stringList.addElement(“Winter”);

Data Structures Using Java 34


Vector StringList
stringList.addElement(“Cool”, 1);

Data Structures Using Java 35


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

Data Structures Using Java 36


Programming Example:
Polynomials

Data Structures Using Java 37


Programming Example:
Polynomials

Data Structures Using Java 38


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

Data Structures Using Java 39


Chapter Summary
• Unordered List
• Class UnorderedArrayList
– Implementations of search, insert and remove
• Time Complexity of List Operations
• Vectors
– Members of the class Vector
• Programming examples

Data Structures Using Java 40

You might also like