ppt version - University of Pittsburgh

Download Report

Transcript ppt version - University of Pittsburgh

Lec.12 (Chapter 12) Dynamic
Data Structures
Jiang (Jen) ZHENG
June 13th, 2005
Outline
 Preview of Data Structure
 How to us those data structures
 How to implement those data structures
 What tools to know and use in order to implement those
data structures
 What Java provide to us and we can use the features
 Dynamic Data Structure
 Basic Data Structure in Java
 List: ArrayList, LinkedList
 Stack
 More on CS0445 …
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
2
Preview of Data Structure
 The way to store and retrieve information.
 Basic Data Structures:






Array
Linked List
Stack
Queue
Tree
…
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
3
Preview of Data Structures
 In Data Structures, we want to learn,
understand and be able to utilize many of the
data structures that are fundamental to
computer science


Data structures such as vectors, stacks,
queues, linked-lists and trees are used
throughout computer science
We should understand these from a user's
point of view:

What are these data structures and how do I use
them in my programs?
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
4
Preview of Data Structures
 We also want to understand implementation
issues related to these data structures, and to
see how they can be implemented in the Java
programming language


Data structures can be implemented in various
ways, each of which has implications (ex: runtime differences, code complexity, modifiability)
We should understand these data structures from
an implementer's point of view:

How can these data structures be effectively
implemented?
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
5
Preview of Data Structures
 We also want to understand and utilize
programming ideas and techniques utilized in
data structure implementation

Object-oriented programming, dynamic
memory utilization, recursion and other
principles must be understood in order to
effectively implement data structures

What tools must I know and be able to use in
order to implement data structures?
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
6
Preview of Data Structures
 We also want to learn more of the Java
programming language and its features, and
to become more proficient at programming
with it


Java is a very large language with extensive
capabilities
As your programming skills improve, you can
utilize more of these capabilities effectively

Since I am working with Java, how well can I
learn and use the language and its features?
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
7
Dynamic Data Structure
 The data structure can expand and contract
during computation





Linked list
Queue
Stack
Vector
…
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
8
List In Java
 Example: Consider the idea of a List:


Ordered (by position), indexable collection of data
In Java this is an interface – with some methods
as shown:

void add(int index, Object element)
 Add a new object at the specified index

int indexOf(Object o)
 Find the object and return its index

Object get(int index)
 Return the object at the specified index

Object remove(int index)
 Remove (and return) the object at the specified index
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
9
List in Java
 Classes Implement the List interface
 ArrayList: Resizable-array implementation of the List
interface
 LinkedList: Use a linked list of nodes as the underlying
Head data structure to implementation of the List interface


Vector: The Vector class implements a growable array of
objects
See Java API.CS401/COE401 Summer 2005.Department of
10
Computer Science.University of
Pittsburgh.Lecture 12
List in Java

Each implementation has advantages and
disadvantages

Ex: Advantage of ArrayList
 get(i) can be done in one step, since we just go to
that index in the array
 In a LinkedList we must follow references down the
list

Ex: Advantage of LinkedList
 add(i, obj) requires only creating a new object and
linking it correctly
 In an ArrayList we must shift all of the items from i
down a spot in order to make "room" at index i
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
11
List in Java

Ex: See ex27.java


Note that the operations work for both ArrayList
and LinkedList, using the List interface
However, the implementations and efficiencies of
the operations differ
 More in CS 0445!
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
12
Stack in Java
 Stack class is a subclass of Vector
 Methods implemented





Boolean empty()
Object peek()
Object pop()
Object push(Object item)
int search(Object o)
 Preview of Stack if needed
 See API
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
13
More on CS0445
 In CS 0445 you will see these and other
implementation ideas in detail
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
14
Garbage Collection
 In C, C++: memory is freed explicitly by the
programmer when certain data structures are
no longer needed.
 In Java: the computer automatically figures
out when an object is no longer needed and
removes it – Garbage Collection.


Reference Counting: when the count goes to
zero, the object can be collected.
Mark and sweep garbage collection: any
object not marked is garbage and can be
recycled.
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
15
Creating and Using Package
 Creating Package


Add a package statement to the top of each
class in the package. Ex. package tio;
Compile the java files. Ex. javac tio/java.*
 Using Package


import tio.*; to import all the classes from a
package.
import tio.Concole; to import the specific class.
CS401/COE401 Summer 2005.Department of
Computer Science.University of
Pittsburgh.Lecture 12
16