there is nothing like "search min or max time and then call function" given . It can be the case: "call the functions in order of nodes or times saved in objects". M i wrong?
On Thu, Aug 4, 2011 at 11:56 PM, Anand Shastri <[email protected]>wrote: > You mean to say linked to maintain all time task with its corresponding > running time and associate function. In that case how will find the task > which has the closed running time. > > If you use min heap it would be easy to find the task that has closest > runing time in O(1) complexity. > > On Thu, Aug 4, 2011 at 10:57 AM, mohit verma <[email protected]>wrote: > >> 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. >> > > -- > 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.
