Suppose you have created two separate .c files named main.c and avl.c (assuming you chose to use avl tree for the data storage). Further, suppose you have created a header file name avl.h which is "included" at the beginning of both main.c and avl.c. Now to compile main.c and avl.c separately and then produce a final executable named Test1, you can create a make file named "makefile", which contains the following lines: **************************************** Test1: [tab] main.o avl.o [tab] gcc main.o avl.o -o Test1 main.o: [tab] main.c avl.h [tab] gcc -c main.c avl.o: [tab] avl.c avl.h [tab] gcc -c avl.c ****************************************** Note here "[tab]" standing for the tab key After you have created the make file, you can perform the compilations by typing "make Test1" at the command line. The executable named "Test1" will be generated. The line "avl.o: [tab] avl.c avl.h" specifies the dependency of avl.o on avl.c and avl.h. The line "[tab] gcc -c avl.c" specifies the command to obtain avl.o. Similarly, the line "Test1: [tab] main.o avl.o" specifies the dependency of Test1 on avl.o and main.o And the line "[tab] gcc main.o avl.o -o Test1" specifies the command to obtain the executable file Test1.