cs 225
play

CS 225 Data Structures Sept. 27 Queues and It Iterators Queue.h - PowerPoint PPT Presentation

CS 225 Data Structures Sept. 27 Queues and It Iterators Queue.h #ifndef QUEUE_H 1 2 #define QUEUE_H 3 4 template <class QE> 5 class Queue { 6 public: 7 8 9 10 11 12 13 14 15 16 17 private: 18 19 20 }; 21 22


  1. CS 225 Data Structures Sept. 27 – Queues and It Iterators

  2. Queue.h #ifndef QUEUE_H 1 2 #define QUEUE_H 3 4 template <class QE> 5 class Queue { 6 public: 7 8 9 10 11 12 13 14 15 16 17 private: 18 19 20 }; 21 22 #endif

  3. Queue.h #ifndef QUEUE_H 1 What type of implementation is this Queue? 2 #define QUEUE_H 3 4 template <class QE> 5 class Queue { How is the data stored on this Queue? 6 public: 7 void enqueue(QE e); 8 QE dequeue(); 9 bool isEmpty(); Which pointer is “entry” and which pointer is “exit”? Ø 10 8 2 5 11 private: 12 struct QueueNode { 13 QE data; 14 QueueNode *next; 15 QueueNode(QE data) ... {} What is the running time of enqueue()? 16 } 17 QueueNode *entry_, *exit_; 18 int size_; 19 What is the running time of dequeue()? 20 }; 21 22 #endif

  4. Queue.h #ifndef QUEUE_H What type of implementation is this Queue? 1 2 #define QUEUE_H 3 4 template <class QE> 5 class Queue { How is the data stored on this Queue? 6 public: 7 void enqueue(QE e); Queue<int> q; 8 QE dequeue(); q.enqueue(3); 9 bool isEmpty(); q.enqueue(8); 10 q.enqueue(4); 11 private: q.dequeue(); 12 QE *items_; q.enqueue(7); 13 unsigned capacity_; q.dequeue(); 14 unsigned count_; q.dequeue(); 15 16 q.enqueue(2); 17 q.enqueue(1); 18 }; q.enqueue(3); 19 q.enqueue(5); 20 #endif q.dequeue(); 21 q.enqueue(9); 22

  5. Queue.h Queue<char> q; #ifndef QUEUE_H 1 q.enqueue(m); 2 #define QUEUE_H 3 m o n q.enqueue(o); 4 template <class QE> q.enqueue(n); 5 class Queue { … 6 public: q.enqueue(d); 7 Queue(); // … etc … q.enqueue(a); 8 void enqueue(QE e); q.enqueue(y); 9 QE dequeue(); q.enqueue(i); 10 bool isEmpty(); q.enqueue(s); 11 q.dequeue(); 12 private: 13 QE *items_; q.enqueue(h); 14 unsigned capacity_; q.enqueue(a); 15 unsigned count_; 16 unsigned entry_; 17 unsigned exit_; 18 19 }; 20 21 #endif 22

  6. stlList.cpp #include <list> 1 2 #include <string> 3 #include <iostream> 4 5 struct Animal { 6 std::string name, food; 7 bool big; 8 Animal(std::string name = "blob", std::string food = "you", bool big = true) : 9 name(name), food(food), big(big) { /* none */ } 10 } 11 12 int main() { 13 Animal g("giraffe", "leaves", true), p("penguin", "fish", false), b("bear"); 14 std::list<Animal> zoo; 15 16 zoo.push_back(g); 17 zoo.push_back(p); // std ::list’s insertAtEnd 18 zoo.push_back(b); 19 20 for ( std::list<Animal>::iterator it = zoo.begin(); it != zoo.end(); it++ ) { 21 std::cout << (*it).name << " " << (*it).food << std::endl; 22 } 23 24 return 0; 25 }

  7. It Iterators Iterators give client code access to traverse the data! Ø 8 2 5 Operators: Types of iterators:

  8. Iterators encapsulated access to our data: private var ++ * Ø 8 2 5

  9. CS 225 – Things To Be Doing Exam 3 (Theory, C++) finishes today! More Info: https://courses.engr.illinois.edu/cs225/fa2017/exams/ MP3: Available now! Up to +7 extra for submission by Monday, Oct. 2! Lab: lab_quacks start today! Fun lab with one of my favorite debugging techniques! POTD Every Monday-Friday – Worth +1 Extra Credit /problem (up to +40 total)

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend