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