Exemplo n.º 1
0
int main()
{
	
  try{
    int data, num;
    scanf("num:%d\n", &num);
				
    PriorityQueue q;
		
    while(scanf("%d\n", &data) != EOF){
      q.Enqueue(data);
    }
		
    while ( ! q.IsEmpty() )  {
      cout << q.Min() << endl;
      q.DequeueMin();
    }
		
  }catch(const char* str ){
    cout << str << endl;
  }
	
  return 0;
	
}
Exemplo n.º 2
0
//
//   This file contains the C++ code from Program 11.22 of
//   "Data Structures and Algorithms
//    with Object-Oriented Design Patterns in C++"
//   by Bruno R. Preiss.
//
//   Copyright (c) 1998 by Bruno R. Preiss, P.Eng.  All rights reserved.
//
//   http://www.pads.uwaterloo.ca/Bruno.Preiss/books/opus4/programs/pgm11_22.cpp
//
void Simulation (PriorityQueue& eventList, time timeLimit)
{
    bool serverBusy = false;
    unsigned int numberInQueue = 0;
    ExponentialRV serviceTime (100.);
    ExponentialRV interArrivalTime (100.);

    eventList.Enqueue (*new Event (Event::arrival, 0));
    while (!eventList.IsEmpty ())
    {
	Event& event =
	    dynamic_cast<Event&> (eventList.DequeueMin ());
	Event::Time& t = event.Key ();
	if (t > timeLimit)
	{
	    delete &event;
	    eventList.Purge ();
	    break;
	}
	switch (event.Value ())
	{
	case Event::arrival:
	    if (!serverBusy)
	    {
		serverBusy = true;
		eventList.Enqueue (*new Event (Event::departure,
		    t + serviceTime.Sample ()));
	    }
	    else
		++numberInQueue;
	    eventList.Enqueue (*new Event (Event::arrival,
		t + interArrivalTime.Sample ()));
	    break;
	case Event::departure:
	    if (numberInQueue == 0)
		serverBusy = false;
	    else
	    {
		--numberInQueue;
		eventList.Enqueue (*new Event (Event::departure,
		    t + serviceTime.Sample ()));
	    }
	    break;
	}
	delete &event;
    }
}