#include <cstdlib>
#include <iostream>
#include "queue"
using namespace std;
class Queue {
public:
Queue(int MaxQueueSize= 5);
~Queue(){delete [] queue;}
bool IsEmpty()const {return front == rear ;}
bool IsFull () const{
return( ((rear+1)% MaxSize == front ) ? 1:0);}
int First() const;
int Last() const;
Queue& Add(const int x);
Queue& Delete(int x);
private:
int front;
int rear;
int MaxSize;
int*queue;
};
Queue::Queue(int MaxQueueSize){
MaxSize = MaxQueueSize +1;
queue = new int[MaxSize];
front = rear = 0;
}
int Queue::First()const
{ return queue[(front+1)% MaxSize];
}
int Queue::Last()const
{ return queue [rear];
}
Queue& Queue::Add(const int x){
rear =(rear + 1)%MaxSize;
queue[rear] = x;
return*this;
}
Queue& Queue::Delete(int x){
front =(front + 1)%MaxSize;
x = queue[front];
return*this;
}
int main(int argc, char *argv[])
{
Queue Q(3);
int x;
try{Q.Add(1).Add(2).Add(3).Add(4);
cout<<"No queue add failed"<<endl;}
catch(...)
{cout<<"\nA queue add failed"<<endl;}
cout<<"\nQueue is now 123"<<endl;
Q.Delete(x);
cout<<" Deleted "<<x<<endl;
cout<<Q.First()<<" == is at front "<<endl;
cout<<Q.Last()<<" == is at end "<<endl;
try{
Q.Delete(x);
cout<<"Deleted"<<x<<endl;
Q.Delete(x);
cout<<"Deleted"<<x<<endl;
Q.Delete(x);
cout<<"Deleted"<<x<<endl;
cout<<"No queue delete failed"<<endl;
}
catch(...)
{cout<<"A delete has failed"<<endl;}
system("PAUSE");
return EXIT_SUCCESS;
}
atau program kelas dengan yang ini yaitu kelas antrian
template<class T>
class antrian{
public:
antrian(int maksAntri=10);
~antrian(){delete[]antri;}
bool isempty()const{return front==rear;}
bool isfull()const{
return(((rear+1)%makssize==front)?1:0);}
T first()const;
T last()const;
antrian<T>& add(const T& x);
antrian<T>& hapus(T& x);
private:
int front;
int rear;
int makssize;
T *antri;
};
template<class T>
antrian<T>::antrian(int maksAntri){
makssize=maksAntri+1;
antri=new T[makssize];
front=rear=0;
}
template<class T>
T maksAntri::first()const{
return antri[(front+1)%makssize];
}
template<class T>
T antrian<T>::last()const{
return antri[rear];
}
template<class T>
antrian<T>& antrian<T>::add(const T& x){
rear=(rear+1)%makssize;
antri[rear]=x;
return *this;
}
template<class T>
antrian<T>& antrian<T>::hapus(T& x){
front=(front+1)%makssize;
x=antrian[front];
return *this;
}
Tidak ada komentar:
Posting Komentar