Chapter 08

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

Chapter 8

Abstract Data
Types
and
Subprograms
Chapter Goals

• Distinguish between an array-based


visualization and a linked visualization
• Distinguish between an array and a list
• Distinguish between and a unsorted list and a
sorted list
• Distinguish between the behavior of a stack and
a queue
• Distinguish between the binary tree and a binary
search tree
2
Chapter Goals

• Draw the binary search tree that is built from


inserting a series of items
• Understand the difference between a tree and a
graph
• Explain the concept of subprograms and
parameters and distinguish between value and
reference parameters

3
Abstract Data Types

Abstract data type


A data type whose properties (data and
operations) are specified independently of any
particular implementation
Remember what the most powerful tool is for
managing complexity?

4
Three Views of Data

Application (user) level


View of the data within a particular problem

View sees data objects in terms of


properties and behaviors

5
Three Views of Data

Logical (abstract) level


Abstract view of the data and the set of
operations to manipulate them

View sees data objects as groups of objects


with similar properties and behaviors

6
Three Views of Data

Implementation level
A specific representation of the structure that hold
the data items and the coding of the operations in
a programming language

View sees the properties represented as specific


data fields and behaviors represented as methods
implemented in code

7
Three Views of Data

Describe a word processor from the three views

8
Three Views of Data

Composite data type


A data type in which a name is given to a
collection of data values
Data structures
The implementation of composite data fields in an
abstract data type
Containers
Object’s whole role is to hold and manipulate other
objects
9
Logical Implementations
Two logical implementations of containers:
Array-based implementation
Objects in the container are kept in an array

Linked-based implementation
Objects in the container are not kept physically
together, but each item tells you where to go to get
the next one in the structure
Did you ever play treasure hunt, a game in which each clue

told you where to go to get the next clue?


10
Stacks

Stack
An abstract data type in which accesses are
made at only one end
– LIFO, which stands for Last In First Out
– The insert is called Push and the delete is
called Pop
Name three everyday
structures that are stacks
11
Stacks

WHILE (more data)


Read value
Push(myStack, value)
WHILE (NOT IsEmpty(myStack))
Pop(myStack, value)
Write value

Can you hand simulate this algorithm?

12
Queues
Queue
An abstract data type in which items are entered at
one end and removed from the other end
– FIFO, for First In First Out
– No standard queue terminology Name
three
• Enqueue, Enque, Enq, Enter, and Insert
are used for the insertion operation everyday
• Dequeue, Deque, Deq, Delete, and Remove structures
are used for the deletion operation. that are
queues

13
Queues

WHILE (more data)


Read value
Enque(myQueue, value)
WHILE (NOT IsEmpty(myQueue))
Deque(myQueue, value)
Write value

Can you hand simulate this algorithm?


Stacks and Queues

Stack and
queue
visualized
as linked
structures

15
Lists

Think of a list as a container of items


Here are the logical operations that can be applied
to lists
Add item Put an item into the list
Remove itemRemove an item from the list
Get next item Get (look) at the next item
more items Are there more items?

16
Array-Based Implementations

17
Linked Implementations

18
Algorithm for Creating and
Print Items in a List

WHILE (more data)


Read value
Insert(myList, value)
Reset(myList)
Write "Items in the list are "
WHILE (moreItems(myList))
GetNext(myList, nextItem)
Write nextItem, ' '
Which implementation?
19
Logical Level

The algorithm that uses the list does not need to


know how it is implemented

We have written algorithms using a stack, a


queue, and a list without ever knowing the
internal workings of the operations on these
containers

20
Trees

Structure such as lists, stacks, and queues


are linear in nature; only one relationship is
being modeled
More complex relationships require more
complex structures
Can you name three more complex
relationships?
21
Trees

Binary tree
A linked container with a unique starting
node called the root, in which each node is
capable of having two child nodes, and in
which a unique path (series of nodes) exists
from the root to every other node
A picture is worth a
thousands words…

22
Trees
Root node

Node with two children

Node with right child

Leaf node

What is the unique path


Node with left child
to the node containing
5? 9? 7? …
23
Binary Search Trees

Binary search tree (BST)


A binary tree (shape property) that has the
(semantic) property that characterizes the
values in a node of a tree:
The value in any node is greater than the
value in any node in its left subtree and less
than the value in any node in its right
subtree
24
Binary Search Tree

Each node
is the root
of a subtree
made up of
its left and
right children

Prove that this


tree is a BST

25
Binary Search Tree

26
Binary Search Tree

Boolean IsThere(current, item)


If (current is null)
return false
Else
Set result to item.compareTo(info(current))
If (result is equal to 0)
return true
Else
If (result < 0)
IsThere(item, left(current))
Else
IsThere(item, right(current))
27
Binary Search Tree

Trace the
nodes passed
as you search
for 18, 8, 5,
4, 9, and 15

What is special
about where
you are when
you find null?

28
Binary Search Tree

IsThere(tree, item)
IF (tree is null)
RETURN FALSE
ELSE
IF (item equals info(tree))
RETURN TRUE
ELSE
IF (item < info(tree))
IsThere(left(tree), item)
ELSE
IsThere(right(tree), item)

29
Building Binary Search Tree

30
Building Binary Search Tree

Insert(tree, item)
IF (tree is null)
Put item in tree
ELSE
IF (item < info(tree))
Insert (left(tree), item)
ELSE
Insert (right(tree), item)

31
Binary Search Tree

Print(tree)
If (tree is not null)
Print (left(tree))
Write info(tree)
Print (right(tree))

Is that all there is to it? Yes!


Remember we said that recursive
algorithms could be very powerful!

32
Graphs

Graph
A data structure that consists of a set of nodes
(called vertices) and a set of edges that relate the
nodes to each other
Undirected graph
A graph in which the edges have no direction
Directed graph (Digraph)
A graph in which each edge is directed from one
vertex to another (or the same) vertex
33
Graphs

34
Graphs

35
Graphs

36
Graph Algorithms

A Depth-First Searching Algorithm--Given a


starting vertex and an ending vertex, we can
develop an algorithm that finds a path from
startVertex to endVertex
This is called a depth-first search because we start
at a given vertex and go to the deepest branch
and explore as far down one path before taking
alternative choices at earlier branches

37
Depth First Search(startVertex, endVertex)
Set found to FALSE
Push(myStack, startVertex)
WHILE (NOT IsEmpty(myStack) AND NOT found)
Pop(myStack, tempVertex)
IF (tempVertex equals endVertex)
Write endVertex
Set found to TRUE
ELSE IF (tempVertex not visited)
Write tempVertex
Push all unvisited vertexes adjacent with tempVertex
Mark tempVertex as visited
IF (found)
Write "Path has been printed"
ELSE
Write "Path does not exist")
38
Can we get from Austin to
Washington?

39
Can we get from Austin to
Washington?

40
Breadth-First Search

What if we want to answer the question of how to


get from City X to City Y with the fewest number of
airline stops?
A Breadth-First Search answers this question
A Breadth-First Search examines all of the vertices
adjacent with startVertex before looking at those
adjacent with those adjacent to these vertices
A Breadth-First Search uses a queue, not a stack,
to answer this above question Why??
41
Breadth First Search(startVertex, endVertex)
Set found to FALSE
Enque(myQueue, startVertex)
WHILE (NOT IsEmpty(myQueue) AND NOT found)
Deque(myQueue, tempVertex)
IF (tempVertex equals endVertex)
Write endVertex
Set found to TRUE
ELSE IF (tempVertex not visited)
Write tempVertex
Enque all unvisited vertexes adjacent with tempVertex
Mark tempVertex as visited
IF (found)
Write "Path has been printed"
ELSE
Write "Path does not exist"
How can I get from Austin to Washington in the fewest
number of stops?

43
Breadth-First Search Traveling
from Austin to Washington, DC

44
Subprogram Statements

We can give a section of code a name and


use that name as a statement in another
part of the program
When the name is encountered, the
processing in the other part of the program
halts while the named code is executed

Remember?

45
Subprogram Statements
What if the subprogram needs data from the
calling unit?
Parameters
Identifiers listed in parentheses beside the
subprogram declaration; sometimes called formal
parameters
Arguments
Identifiers listed in parentheses on the
subprogram call; sometimes called actual
parameters
46
Subprogram Statements

Value parameter
A parameter that expects a copy of its
argument to be passed by the calling unit
Reference parameter
A parameter that expects the address of its
argument to be passed by the calling unit

47
Subprogram Statements
Think of arguments as being placed on a message board

48
Subprogram Statements
Insert(list, item) // Subprogram definition
Set list.values[length-1] to item
Set list.length to list.length + 1

Insert(myList, value) // Calling statement

Which parameter must be by reference?

49
Ethical Issues
Workplace Monitoring

Do privacy rights extend to the workplace?

What is employee Internet monitoring?

Have you been monitored in the


workplace?

How is email equivalent to DNA?

50
Who am I?
In the 1940s, the new
computer architecture
I developed
revolutionized the
design of computers.
Today’s computers are
referred to as [my last
name] machines
because the
architectural principles
I described have proven
very successful.
Courtesy of the U.S. Department of Energy.

51
Do you know?

How did Kealing Middle School use mobile phones to lower


students’ resting heart rates?
What is peer-to-peer funding?
What branch of mathematics is being used in terrorist detection?
What is an EAN message?
What are lending clubs, and how do they bring down borrowing
costs for Main Street businesses?
How did the 2007 Economic Stimulus Package provide a feast day
for scammer?
What is the difference between a hacker and a cracker?

52

You might also like