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.