Computer Science 261
Exercise set #
Due: Tuesday, Oct. 26
Consider the following code (note that this includes a class template for a queue class, a helper routine GetCh, and the creator procedure for the queue ADT):
#include <iostream.h> const int QueueSize=11; // 10 items max in stack void GetChar(char &ch); class CharQueue{ public: CharQueue(); //constructor char get(); //accessors void put(char ch); bool IsFull(); bool IsEmpty(); private: char theQueue[QueueSize]; int front, back; //pointers. front points to // the item at the front of the queue, back points // to the next available spot to put something. // When front == back the queue is empty. }; void GetChar(char &ch) { cin.get(ch); while ((ch == '\n') || (ch == ' ')) cin.get(ch); // skip over noise } int main() { // type characters in, load (or attempt to load) them // in to a queue. ';' causes the contents of the queue // to be printed, 'q' stops the program CharQueue MyQueue; char ch; cout << "\nType in characters. ';' to print characters typed\n"; cout << "There are a total of " << QueueSize-1 << endl; cout << "characters possible in the queue: typing more than this"; cout << "should cause an error message to be printed " << endl << endl; GetChar(ch); while (ch != 'q') { while (ch != ';') { MyQueue.put(ch); GetChar(ch); } cout << "\nThe String is: "; while (!MyQueue.IsEmpty()) { ch = MyQueue.get(); cout << ch; } cout << endl; GetChar(ch); } return 0; } CharQueue::CharQueue() { front = 0; back = 0; return; }
Include all this in a program (called queue.cpp). Please note that you need only to add the get, put, IsFull and IsEmpty accessor routines.