Kamis, 28 Oktober 2010

tugas pak tedi buat class antrian(Queue)

#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