44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
// queue.h -- interface for a queue
|
|
#ifndef QUEUE_H_
|
|
#define QUEUE_H_
|
|
// This queue will contain Customer items
|
|
class Customer
|
|
{
|
|
private:
|
|
long arrive; // arrival time for customer
|
|
int processtime; // processing time for customer
|
|
public:
|
|
Customer() : arrive(0), processtime (0){}
|
|
void set(long when);
|
|
long when() const { return arrive; }
|
|
int ptime() const { return processtime; }
|
|
};
|
|
|
|
typedef Customer Item;
|
|
|
|
class Queue
|
|
{
|
|
private:
|
|
// class scope definitions
|
|
// Node is a nested structure definition local to this class
|
|
struct Node { Item item; struct Node * next;};
|
|
enum {Q_SIZE = 10};
|
|
// private class members
|
|
Node * front; // pointer to front of Queue
|
|
Node * rear; // pointer to rear of Queue
|
|
int items; // current number of items in Queue
|
|
const int qsize; // maximum number of items in Queue
|
|
// preemptive definitions to prevent public copying
|
|
Queue(const Queue & q) : qsize(0) { }
|
|
Queue & operator=(const Queue & q) { return *this;}
|
|
public:
|
|
Queue(int qs = Q_SIZE); // create queue with a qs limit
|
|
~Queue();
|
|
bool isempty() const;
|
|
bool isfull() const;
|
|
int queuecount() const;
|
|
bool enqueue(const Item &item); // add item to end
|
|
bool dequeue(Item &item); // remove item from front
|
|
};
|
|
#endif
|