Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 16 – Data Structures and Recursion. Data Structures u Built-in –Array –struct u User developed –linked list –stack –queue –tree Lesson 16.1.

Similar presentations


Presentation on theme: "Chapter 16 – Data Structures and Recursion. Data Structures u Built-in –Array –struct u User developed –linked list –stack –queue –tree Lesson 16.1."— Presentation transcript:

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:


Download ppt "Chapter 16 – Data Structures and Recursion. Data Structures u Built-in –Array –struct u User developed –linked list –stack –queue –tree Lesson 16.1."

Similar presentations


Ads by Google