0% found this document useful (0 votes)
175 views35 pages

CSC508: CH1

This document discusses data structures and array-based lists. It describes the key operations that can be performed on lists, such as creation, insertion, removal, and searching. It also discusses using abstract classes like ArrayListClass and DataElement to define generic lists that can contain different data types. Specific classes like IntElement and StringElement are used to store integer and string elements. The document provides examples of implementing an unordered array-based list with operations for searching, inserting, and removing elements.

Uploaded by

Okita Souji
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
175 views35 pages

CSC508: CH1

This document discusses data structures and array-based lists. It describes the key operations that can be performed on lists, such as creation, insertion, removal, and searching. It also discusses using abstract classes like ArrayListClass and DataElement to define generic lists that can contain different data types. Specific classes like IntElement and StringElement are used to store integer and string elements. The document provides examples of implementing an unordered array-based list with operations for searching, inserting, and removing elements.

Uploaded by

Okita Souji
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

CSC 508

Data Structures
CSC 508
Data Structures
Topic 1: Introduction to Data
Structures
ARRAY LIST

By: Mdm Anis Amilah Shari


Learning Outcomes

At the end of the class, students are able to


• List different types of List data structure
• Implement various List operations, such as
search, insert, remove etc.
• Design and implement a generic class to
process various types of lists

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)

• 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

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

public boolean isFull() public int maxListSize()


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

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();
}

public boolean isItemAtEqual(int location, DataElement item)


{
return (list[location].equals(item));
}
16
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

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

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

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

You might also like