edelossantos
asked on
Circ Queue Syntax Check
// circ.cpp
#include <iostream>
#include <fstream>
using namespace std;
typedef int QueueElement;
class Queue {
private:
class Node {
public:
QueueElement data;
Node *next;
Node():next(0){} // inline initializer
Node(QueueElement dataValue): data(dataValue), next(0){}
};
typedef Node *next;
typedef Node *NodePointer;
public:
Queue();
Queue(const Queue &original);
~Queue();
const Queue &operator = (const Queue &rightHandSide);
bool empty() const;
void enqueue(const QueueElement &value);
QueueElement first() const;
void dequeue();
QueueElement backQueue() const;
QueueElement nthElement(int);
int sizeQueue();
void display(ostream &out) const;
private:
void display(NodePointer ptr, ostream &out) const;
NodePointer myFront, myBack;
};
Queue::Queue():myBack(0), myFront(0){}
Queue::Queue(const Queue &original) {
myFront = myBack = 0;
if(!original.empty()) {
myFront = myBack = new Queue::Node(original.first
Queue::NodePointer origPtr = original.myBack->next;
while(origPtr != 0) {
myBack->next = new Queue::Node(origPtr->data)
myBack = myBack->next;
origPtr = origPtr->next;
}
}
}
Queue::~Queue() {
Queue::NodePointer prev = myBack, ptr;
while(prev != 0) {
ptr = prev->next;
delete prev;
prev = ptr;
}
}
const Queue& Queue::operator = (const Queue& rightHandSide) {
if(this != &rightHandSide) {
this->~Queue();
if(rightHandSide.empty())
myFront = myBack = 0;
else {
myFront = myBack = new Queue::Node(rightHandSide.
Queue::NodePointer rhsPtr = rightHandSide.myBack->next
while(rhsPtr != 0) {
myBack->next = new Queue::Node(rhsPtr->data);
myBack = myBack->next;
rhsPtr = rhsPtr->next;
}
}
}
return *this;
}
bool Queue::empty() const {
return myBack == 0;
}
void Queue::enqueue(const QueueElement &dataVal) {
NodePointer ptr = new Node(dataVal);
if(ptr == 0) {
cout << "Out of memory. " << endl;
}
if(myBack == 0) {
myBack = myFront = ptr;
ptr->next = ptr;
}
else {
ptr->next = myBack;
myBack = ptr;
myFront->next = ptr;
}
}
QueueElement Queue::first() const {
if(myBack == 0) {
cerr << " Queue empty. " << endl;
}
QueueElement *temp = new(QueueElement);
QueueElement garbage = *temp;
delete temp;
return garbage = *temp;
return myBack->next->data;
}
void Queue::dequeue() {
if(myBack == 0)
cerr << " Queue empty. " << endl;
else {
NodePointer ptr = myBack->next;
if(ptr->next == ptr)
myBack = 0;
else
myBack->next = ptr->next;
delete ptr;
}
}
void Queue::display(ostream& out) const {
if(myFront != NULL) {
if(myFront == myBack) {
out << myFront->data;
}
else {
display(myBack, out);
}
}
}
void Queue::display(NodePointer
if(ptr != myFront) {
display(ptr->next, out);
}
out << ptr->data << endl;
}
QueueElement Queue::backQueue() const {
if(myBack != 0)
return myBack->data;
cerr << " Queue empty. \n";
QueueElement temp = new(QueueElement);
QueueElement = *temp;
delete temp;
return garbage;
}
QueueElement Queue::nthElement(int n) {
QueueElement ptr = elem;
while(n > 0 && !empty()) {
elem = myFront();
Queue();
if(n > 0) {
cerr << " Insert width of element. " << endl;
return garbage;
}
return elem;
}
}
int Queue::sizeQueue() {
int count = 0;
Node* p = myFront;
while(p != NULL) {
count++;
p = p->next;
}
return count;
}
void print(Queue& q){q.display(cout);}
int main() {
Queue q1;
cout << "Queue created. Empty? " << boolalpha << q1.empty() << endl;
cout << "How many elements to add to the queue? ";
int numItems;
cin >> numItems;
for(int i = 1; i <= numItems; i++)
q1.enqueue(100*i);
cout << "Contents of queue q1 (via print):\n";
print(q1); cout << endl;
Queue q2;
q2 = q1;
cout << "Contents of queue q2 after q2 = q1 (via print):\n";
print(q2); cout << endl;
cout << "Queue q2 empty? " << q2.empty() << endl;
cout << "Front value in q2: " << q2.first() << endl;
while(!q2.empty()) {
cout << "Remove front -- Queue contents: ";
q2.dequeue();
q2.display(cout);
}
cout << "Queue q2 empty? " << q2.empty() << endl;
cout << "Front value in q2? " << endl << q2.first() << endl;
cout << "Trying to remove front of q2: " << endl;
q2.dequeue();
return 0;
system("pause");
}
output:
circ.cpp
c:\documents and settings\enrique\my documents\cs223_spring06 ~awanni\test\circ.cpp(194)
There is no context in which this conversion is possible
c:\documents and settings\enrique\my documents\cs223_spring06 ~awanni\test\circ.cpp(195)
c:\documents and settings\enrique\my documents\cs223_spring06 ~awanni\test\circ.cpp(195)
c:\documents and settings\enrique\my documents\cs223_spring06 ~awanni\test\circ.cpp(197)
c:\documents and settings\enrique\my documents\cs223_spring06 ~awanni\test\circ.cpp(198)
c:\documents and settings\enrique\my documents\cs223_spring06 ~awanni\test\circ.cpp(204)
c:\documents and settings\enrique\my documents\cs223_spring06 ~awanni\test\circ.cpp(206)
Build log was saved at "file://c:\Documents and Settings\Enrique\My Documents\Visual Studio 2005\Projects\Lab 6\Lab 6\Debug\BuildLog.htm"
Lab 6 - 7 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.