Exercises 2.2
E2 (b):
Error_code copy_stack(Stack &dest,Stack &source)
{
Erroe_code detected=success;
Stack temp;
Stack_entry item;
While (detected==success&&!source.empty()}{
Detected=source.top(item);
Detected=source.pop();
if(detected==success)detected=temp.push(item);
}
While(detected==succes&&!temp.empty()}{
detected=temp.top(item);
detected=temp.pop();
if(detected==success)detected=source.push(item);
if(detected==success)detected=dest.push(item);
}
return detected;
}
Exercises 3.3
E7
The class definition for this queue implementation is as follows.
const int maxqueue=10;
class Queue{
Public:
Queue();
Bool empty()const;
Error_code serve();
Error_code append(const Queue_entry &item);
Error_code retrieve(Queue_entry&item)const;
Protected:
int front ,rear;
Queue_entry entry[maxqueue];
bool is_empty;
};
The method implementations follow.
Queue::Queue()
{
rear=-1;
front=0;
is_empty=true;
}
Bool Queue::empty()const
{
return is_empty;
}
Error_code Queue::append(const Queue_entry &item)
{
if(!empty()&&(rear+1)%maxqueue==front)return overflow;
is_ empty=false;
Rear=((rear+1)==maxqueue)?0:(rear+1);
Entry[rear]=item;
return success;
}
Error_code Queue;:retrieve(Queue_entry&item)const
{
if((empty())return underflow;
item=entry[front];
Return success;
}