Chapter 16 PowerPoint
Download
Report
Transcript Chapter 16 PowerPoint
Chapter 16 – Data Structures
and Recursion
Data Structures
Built-in
– Array
– struct
User
–
–
–
–
developed
linked list
stack
queue
tree
Lesson 16.1
Programmer-defined Linked List Class
Data
members (could be different types)
stored in (usually) contiguous block of
memory
– One of the data members is a pointer variable
Address stored points to the next object
Data
member that has address creates link
between objects
Each object referred to as a node
Lesson 16.1
Linked List
Representation
Head node
Object 2
FactObjects
that link
address
in
points
tovariable
next
Pointer
value
linked
list object
Object 3
Object 4
Lesson 16.1
Actions on Linked List
Must
go node to node from head node
Can delete node by making address that points
to one to be deleted to next object
Can insert node by changing address stored in
pointer variable for node preceding location of
insertion
Can move node from one location to another
Must keep track of current node and head
node
Lesson 16.1
Linked List Classes
Use
two classes to create linked list
– Node class
Holds only the data
All data members public because no function
members
– Second used to manipulate nodes
One variable holds address of first object in list
Another variable holds current node address
Lesson 16.1
Node Class
General
form:
Class name
class Node
{
public:
Data types
type member1;
Identifiers
representing
(not necessarily
type
member2;
Nameallfor
node
data
thestoring
same)
…
address of next
Node*
next_node;
node in list
};
Lesson 16.1
Second Class
Used to manipulate
the nodes
Data only pointer
variables used to
hold addresses
Lesson 16.1
Address of node
being manipulated
Address of
first object
class Llist
{
private:
Node* head;
Node* current;
public:
void make_list ( );
void show_list ( );
};
Stack
Data
structure created using linked list model
With stack can perform only two fundamental
operations
– Push
Insert node immediately after the head
– Pop
Retrieve and delete node immediately after head
Only
work with nodes at top
Lesson 16.2
Stack Classes
Two
classes create stack
– One class holds only data
Same form as linked list
one member must be pointer variable
– Second class used to manipulate nodes
Data only pointer variables used to hold addresses of
nodes
Nodes of interest for stack are head and tail
Function members initialize, push and pop items
Lesson 16.2
Stack Class
class Stack
Address of head node
{
and last node
private:
Node* head;
Node* tail;
public:
Stack ( );
void push (int);
int pop ( );
};
Lesson 16.2
Stack Classes
Create
empty stack by initializing a head and
tail node
– Allow finding top and bottom of stack
Should
not pop from an empty stack
LIFO
– Last In First Out
Last node pushed is first node popped off
Lesson 16.2
Queue Class
Can
create with linked list form
– Must have a head and tail node
FIFO
– First node inserted into queue is first node
removed
Nodes
are inserted at tail of queue and
removed from head of queue
Lesson 16.3
Queue Class
class Queue
{
Class Node
private:
{
Node* head;
public:
Node* tail;
type member;
public:
Node* next_node;
Queue ( );
};
void insert (int);
int remov ( );
};
Lesson 16.3
Types of Queues
Dequeue
- "double-ended queue"
– Nodes can be inserted at either end and removed
from either end
Output
restricted dequeue
– Insertion allowed at both ends but removal
allowed at only one end
Input
restricted dequeue
– Removal allowed at both ends, insertion allowed
at only one end
Priority
queue
– Priority for each node – highest priority
processed first
Lesson 16.3
Binary Tree
Tree
is particular type
of graph
– Binary tree is
particular type of tree
Graph
is data structure
that includes nodes
– each node can have
more than one pointer
Linked List
Lesson 16.4
Graph
Graph Terminology
Nodes
can also be called vertices or points
Connections between nodes called edges or
arcs
Two nodes considered adjacent of neighbors
if edge connects them
Path between one node and another indicated
by list of connect nodes between two
Simple path is path with no repeated nodes
Lesson 16.4
Graphs
Weighted
graph
– Assign length or cost of each edge
Tree
– graph with characteristic that there is only one path
between any two nodes
– Rooted tree
Tree with one node specified to be root
Root traditionally shown at top of diagram
– Binary tree
Tree in which no node has more than two children
Lesson 16.4
Tree Class
Similar to linked
list and stack
classes
Two classes
– One class holds
content of nodes
– Second class
manipulates the
nodes
Lesson 16.4
class Tree_node
{
public:
type member;
Tree_node* left_child;
Tree_node* right_child;
};
Recursion
Within
function body there is call to
function with identical name and signature
Basic action which is repeated until it
reaches the final iteration of the basic action
Lesson 16.5
Summary
Learned how to:
Create
a linked list
Create
a stack
Create
a queue
Create
a binary tree
Identify
recursive functions