1. Trang chủ
  2. » Công Nghệ Thông Tin

Lecture Programming in C++ - Chapter 16: Data structures and recursion

21 70 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 309,57 KB

Nội dung

Lecture Programming in C++ - Chapter 16: Data structures and recursion. On completion of this chapter students will know how to: Create a linked list, create a stack, create a queue, create a binary tree, identify recursive functions.

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 Fact that address link Objects in  points to next object   Pointer variable value linked list Head node   Object 2     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; Name for storing node data      all the 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;              Node*  next_node;           public:                     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 Lesson 16.4 Linked List         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 ...                   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... 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 .. .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) 

Ngày đăng: 30/01/2020, 02:33

TỪ KHÓA LIÊN QUAN