Documente Academic
Documente Profesional
Documente Cultură
Data Structures
CSC 508
Data Structures
Topic 1: Introduction to Data
Structures
ARRAY LIST
3
Array-Based Lists
• List: A collection of elements of the same
type
• Length of list is number of elements in list
4
Class ArrayList (Java 2 SE 5.0)
java.util
Class ArrayList
- ArrayList( )
- add(int index, E element)
- isEmpty()
- size()
- otherMethods( )….
5
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
6
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
7
Type of List Elements
(Malik, 2003)
8
Type of List Elements
(Malik, 2003)
9
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
10
class IntElement
(Malik, 2003)
11
class StringElement
(Malik, 2003)
12
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. Example: List of
students.
13
class ArrayListClass
14
Definitions of Nonabstract
Methods of ArrayListClass
public boolean isEmpty() public int listSize()
{ {
return (length == 0); return length;
} }
15
Definitions of Nonabstract
Methods of ArrayListClass
public void print()
{
for(int i = 0; i < length; i++)
System.out.print(list[i] + “ “);
System.out.println();
}
17
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
18
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
19
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
20
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
21
Definition of ArrayListClass
22
Unordered List
• class UnorderedArrayList is a subclass of
the class ArrayListClass
• Elements are not necessarily sorted
• class UnorderedList implements
operations search, insert, and remove
23
class UnorderedArrayList
24
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”
25
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
26
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
27
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
28
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
29
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
30
Programming Example: Polynomials
31
Programming Example: Polynomials
32
Topic 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
33
Topic Summary
• Unordered List
• Class UnorderedArrayList
– Implementations of search, insert and remove
• Programming examples
34