¡¡¡¡Error_code serve_and_retrieve(Queue_entry &item);
¡¡¡¡};
¡¡¡¡#endif
¡¡¡¡#ifndef QUEUE_H
¡¡¡¡#define QUEUE_H
¡¡¡¡const int maxqueue=10;
¡¡¡¡enum Error_code {success,overflow,underflow};
¡¡¡¡typedef char Queue_entry ;
¡¡¡¡class Queue{
¡¡¡¡public:
¡¡¡¡Queue();
¡¡¡¡bool empty() const;
¡¡¡¡Error_code append(const Queue_entry &item);
¡¡¡¡Error_code serve();
¡¡¡¡Error_code retrieve(Queue_entry &item)const;
¡¡¡¡protected:
¡¡¡¡int count;
¡¡¡¡int front,rear;
¡¡¡¡Queue_entry entry[maxqueue];
¡¡¡¡};
¡¡¡¡class Extended_queue:public Queue{
¡¡¡¡public:
¡¡¡¡bool full()const;
¡¡¡¡int size()const;
¡¡¡¡void clear();
¡¡¡¡Error_code serve_and_retrieve(Queue_entry &item);
¡¡¡¡};
¡¡¡¡#endif
¡¡¡¡queue.cpp
¡¡¡¡[cpp] view plaincopyprint
¡¡¡¡#include"queue.h"
¡¡¡¡Queue::Queue()
¡¡¡¡{
¡¡¡¡count=0;
¡¡¡¡rear=maxqueue-1;
¡¡¡¡front=0;
¡¡¡¡}
¡¡¡¡bool Queue::empty() const
¡¡¡¡{
¡¡¡¡return count==0;
¡¡¡¡}
¡¡¡¡Error_code Queue::append(const Queue_entry &item)
¡¡¡¡{
¡¡¡¡if(count>=maxqueue)return overflow;
¡¡¡¡count++;
¡¡¡¡rear=((rear+1)==maxqueue) 0:(rear+1);
¡¡¡¡entry[rear]=item;
¡¡¡¡return success;
¡¡¡¡}
¡¡¡¡Error_code Queue::serve()
¡¡¡¡{
¡¡¡¡if(count<=0)return underflow;
¡¡¡¡count--;
¡¡¡¡front=((front+1)==maxqueue) 0:(front+1);
¡¡¡¡return success;
¡¡¡¡}
¡¡¡¡Error_code Queue::retrieve(Queue_entry &item) const
¡¡¡¡{
¡¡¡¡if(count<=0)return underflow;
¡¡¡¡item=entry[front];
¡¡¡¡return success;
¡¡¡¡}
¡¡¡¡bool Extended_queue::full() const{
¡¡¡¡return count==maxqueue;
¡¡¡¡}
¡¡¡¡int Extended_queue::size()const{
¡¡¡¡return count;
¡¡¡¡}
¡¡¡¡void Extended_queue::clear(){
¡¡¡¡count=0;
¡¡¡¡rear=front;
¡¡¡¡}
¡¡¡¡Error_code Extended_queue::serve_and_retrieve(Queue_entry &item){
¡¡¡¡if(count==0)return underflow;
¡¡¡¡count--;
¡¡¡¡item=entry[front];
¡¡¡¡front=((front+1)==maxqueue) 0:(front+1);
¡¡¡¡return success;
¡¡¡¡}
¡¡¡¡#include"queue.h"
¡¡¡¡Queue::Queue()
¡¡¡¡{
¡¡¡¡count=0;
¡¡¡¡rear=maxqueue-1;
¡¡¡¡front=0;
¡¡¡¡}
¡¡¡¡bool Queue::empty() const
¡¡¡¡{
¡¡¡¡return count==0;
¡¡¡¡}
¡¡¡¡Error_code Queue::append(const Queue_entry &item)
¡¡¡¡{
¡¡¡¡if(count>=maxqueue)return overflow;
¡¡¡¡count++;
¡¡¡¡rear=((rear+1)==maxqueue) 0:(rear+1);
¡¡¡¡entry[rear]=item;
¡¡¡¡return success;
¡¡¡¡}
¡¡¡¡Error_code Queue::serve()
¡¡¡¡{
¡¡¡¡if(count<=0)return underflow;
¡¡¡¡count--;
¡¡¡¡front=((front+1)==maxqueue) 0:(front+1);
¡¡¡¡return success;
¡¡¡¡}
¡¡¡¡Error_code Queue::retrieve(Queue_entry &item) const
¡¡¡¡{
¡¡¡¡if(count<=0)return underflow;
¡¡¡¡item=entry[front];
¡¡¡¡return success;
¡¡¡¡}
¡¡¡¡bool Extended_queue::full() const{
¡¡¡¡return count==maxqueue;
¡¡¡¡}
¡¡¡¡int Extended_queue::size()const{
¡¡¡¡return count;
¡¡¡¡}
¡¡¡¡void Extended_queue::clear(){
¡¡¡¡count=0;
¡¡¡¡rear=front;
¡¡¡¡}
¡¡¡¡Error_code Extended_queue::serve_and_retrieve(Queue_entry &item){
¡¡¡¡if(count==0)return underflow;
¡¡¡¡count--;
¡¡¡¡item=entry[front];
¡¡¡¡front=((front+1)==maxqueue) 0:(front+1);
¡¡¡¡return success;
¡¡¡¡}
¡¡¡¡comparequeue.cpp
¡¡¡¡[cpp] view plaincopyprint
¡¡¡¡#include "queue.h"
¡¡¡¡#include
¡¡¡¡#include
¡¡¡¡using namespace std;
¡¡¡¡void Introduction();
¡¡¡¡void Compare();
¡¡¡¡int main(){
¡¡¡¡Introduction();
¡¡¡¡Compare();
¡¡¡¡return 0;
¡¡¡¡}
¡¡¡¡//show the introduction of the program
¡¡¡¡void Introduction(){
¡¡¡¡cout<<"Hi! This program is compare two parts of characters."<¡¡¡¡<<"First you should type in a line of characters which is supposed to consist of two parts "
¡¡¡¡<<"separated by a colon ':' ."<¡¡¡¡<<"And then enter to quit put in"<¡¡¡¡<<"Then I will show you a single character as follows :"<¡¡¡¡<<"[N] No colon on the line"<¡¡¡¡<<"[L] The left part (before the colon) is longer than the right"<¡¡¡¡<<"[R] The right part (after the colon) is longer than the left"<¡¡¡¡<<"[D] The left and the right parts have the same length but different"<¡¡¡¡<<"[S] The left and the right parts are exactly the same"<¡¡¡¡<<"And enter [Ctrl+'Z'] to stop input"<¡¡¡¡<<"So , just try it!"<¡¡¡¡return;
¡¡¡¡}
¡¡¡¡void Compare(){
¡¡¡¡Extended_queue left_queue;
¡¡¡¡char left_char;
¡¡¡¡bool waiting=true;
¡¡¡¡while(cin>>left_char && waiting){
¡¡¡¡if(left_char==':'){
¡¡¡¡waiting=false; //if ':' is entered, quit the left input
¡¡¡¡break;
¡¡¡¡}
¡¡¡¡else if(left_queue.full())
¡¡¡¡cout<<"Queue is full!"<¡¡¡¡else
¡¡¡¡left_queue.append(left_char);
¡¡¡¡//if the input is not ':' and there is space in the queue
¡¡¡¡//append the charcter to the queue
¡¡¡¡}
¡¡¡¡char right_char;
¡¡¡¡bool same=true;
¡¡¡¡while(!waiting && cin>>right_char){ //if ':' is input before
¡¡¡¡//now input the righter charachters
¡¡¡¡if(left_queue.empty()){
¡¡¡¡cout<<"R"<¡¡¡¡//and the user is still inputing, right must longer than left
¡¡¡¡//print [R]
¡¡¡¡return;
¡¡¡¡}
¡¡¡¡else{
¡¡¡¡left_queue.serve_and_retrieve(left_char);
¡¡¡¡if(left_char!=right_char)
¡¡¡¡same=false; //if the character input now is different from
¡¡¡¡//the one put into left before, set the bool same to 'false'
¡¡¡¡}
¡¡¡¡}
¡¡¡¡if(waiting){
¡¡¡¡cout<<"N"<¡¡¡¡//print [N]
¡¡¡¡return ;
¡¡¡¡}
¡¡¡¡if(!left_queue.empty()){
¡¡¡¡cout<<"L"<¡¡¡¡//left must longer than right
¡¡¡¡//print [L]
¡¡¡¡return ;
¡¡¡¡}
¡¡¡¡if(left_queue.empty() && same){
¡¡¡¡cout<<"S"<¡¡¡¡//left and right have the exactly same characters
¡¡¡¡//print [S]
¡¡¡¡return;
¡¡¡¡}
¡¡¡¡return;
¡¡¡¡}
¡¡¡¡#include "queue.h"
¡¡¡¡#include
¡¡¡¡#include
¡¡¡¡using namespace std;
¡¡¡¡void Introduction();
¡¡¡¡void Compare();
¡¡¡¡int main(){
¡¡¡¡Introduction();
¡¡¡¡Compare();
¡¡¡¡return 0;
¡¡¡¡}
¡¡¡¡//show the introduction of the program
¡¡¡¡void Introduction(){
¡¡¡¡cout<<"Hi! This program is compare two parts of characters."<¡¡¡¡<<"First you should type in a line of characters which is supposed to consist of two parts "
¡¡¡¡<<"separated by a colon ':' ."<¡¡¡¡<<"And then enter to quit put in"<¡¡¡¡<<"Then I will show you a single character as follows :"<¡¡¡¡<<"[N] No colon on the line"<¡¡¡¡<<"[L] The left part (before the colon) is longer than the right"<¡¡¡¡<<"[R] The right part (after the colon) is longer than the left"<¡¡¡¡<<"[D] The left and the right parts have the same length but different"<¡¡¡¡<<"[S] The left and the right parts are exactly the same"<¡¡¡¡<<"And enter [Ctrl+'Z'] to stop input"<¡¡¡¡<<"So , just try it!"<¡¡¡¡return;
¡¡¡¡}