why are u maintaining heap? can't we use link list here?

On Thu, Aug 4, 2011 at 11:16 PM, Anand Shastri <[email protected]>wrote:

> *You have given a structure which has two member, One which stores the
> time and other stores the function pointer Your function has to call the *
> *function stored in the fuction poitner after the time given in the
> structure elapses.
> Design that function? *
>
> Approach: To design this function I would use a min Heap data structure.
> Each node of a heap has
>                 two parameters one is the running time and other one is the
> function pointer.
>
> // Initialise a function pointer
> typedef void (*functionToBeCalled)(int arg1, int arg2);
>
> // Timer structure
> typedef struct timer
> {
>    float runingTime;   // in terms of seconds
>    functionToBeCalled funcToBeCall; // function pointer
> }TIMER;
>
> void initTimer()
> {
>    Initialise few nodes with running time and its corresponding function
>    Initialise a MIN heap data structure
> }
>
> void addTimer(uint32 runingTime, functionToBeCalled func)
> {
>      TIMER *temp;
>       temp = (TIMER *)malloc(sizeof(TIMER));
>       temp->runingTime = runningTime
>       temp->funcToBeCall = func;
>       HeapAdd(temp);
>       Heapify();
> }
>
> void scheduler()
> {
>             uint32 currentTime = ObtainCurrentTime();
>             // Obtain the runing time of top most element of the min Heap
>             uint32 runingTime = PeakHeap();
>             // if the runningTime is equal to current time then extract the
> top most
>             // element of the heap and execute the function associate with
> it
>             // Heapify the MIN heap data structure
>             // Obtain the runing time of top most element of the min heap
>             // scheduler sleep for that much amount of time.
>             if(runingTime == currentTime)
>             {
>                  TIMER * node = ExtractMinHeap();
>                   CreateThread(node->func, Thread);
>                   Heapify();
>                   runingTime = PeakHeap();
>                  sleep(runningTime);
>             }
>             else
>             {
>                // scheduler updates its sleep time
>               // if runing time is not equal to current time
>               sleep(runningTime);
>             }
>
>  }
>
> Let me know your comments
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>



-- 
........................
*MOHIT VERMA*

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to