All pastes #1652354 Raw Edit

Unnamed

public cpp v1 · immutable
#1652354 ·published 2009-11-02 00:52 UTC
rendered paste body
//      queue.cpp//      //	Source: class notes w/ additions#include <iostream>using namespace std;class Queue{     private:         struct Node         {               Node (int data, Node* next) :                   mydata(data), mynext(next) {}               int mydata;               Node *mynext;         };     public:         Queue() : count(0), myfront(NULL), myback(NULL){} // added count initializer         ~Queue();         int front() const;         int back() const;         bool is_empty() const;         void enqueue(const int);         void dequeue();         bool Filter(int);         void callFilter(); //Calls the filter function                  // added (begin)         int front_and_dequeue();         int count;         // added (end)              private:          Node* myfront;          Node* myback;};/* Implementation of member functions */Queue :: ~Queue(){     if (myfront == NULL) return;     for (Node *p = myfront->mynext; p; p=p->mynext)          delete myfront;}int Queue :: front() const{     return myfront->mydata;}int Queue :: back () const{     return myback->mydata;}bool Queue :: is_empty () const{     return bool(myfront == NULL);}void Queue :: enqueue(const int d){     Node *p=new Node(d, NULL);     if (myback == NULL){          myback=p;          myfront=p;     }     else {          p->mynext=myback;          myback=p;     }          // added (begin)     count++;     // added (end)          cout<<"Item entered into the queue: "           <<myback->mydata<<endl;}void Queue :: dequeue(){     Node *p=myback;     if (is_empty())           cout << "Queue empty: Nothing to delete"<<endl;     else {           if (myback==myfront){                cout<<"Item removed from queue: "                <<myback->mydata<<endl;                delete myback;                myback=NULL;                myfront=NULL;                          }           while(p->mynext != myfront)                p=p->mynext;           int d=myfront->mydata;           cout<<"Item removed from queue: "<<d<<endl;           delete myfront;           myfront=p;     }     count--;}// added (begin)int Queue :: front_and_dequeue() {	int retval = front();	dequeue();	return retval;}// added (end)void Queue::callFilter(){	int value, Try;	Try = 0;		cout << "Please enter the value that you wish to search for(anything other than 0: ";	cin >> value;		while (Try < 10)		if (value > 0) {			Filter(value);			break;		} else {			cout << "Please enter a new value you have " << 10-Try << " chances left: ";			cin >> value;			Try++;		}}bool Queue::Filter(int A){	int B, C, exit, c;		c = 0;	B = front();	C = B; //to remeber the first value	exit = 0;	while(exit == 0){   		if (front() == A){			dequeue();			exit = 1;			break;		} else {               			enqueue(front_and_dequeue());			c += 1;           		} 		}	for (int i=0; i < count - c; i++)//get back to the original front	{           		enqueue(front_and_dequeue());	}}main() /* A test-drive for queue */{     Queue q;     q.enqueue(45);     q.enqueue(56);     q.enqueue(32);         q.enqueue(12);     q.enqueue(89);     q.callFilter();     q.dequeue();     q.dequeue();     q.dequeue();     q.dequeue();     q.dequeue();}