I don't have a program for you but here are a few pointers.
The problem with DOS is that it puts a dummy character in the FAT when deleting the file. You have to match the remaining characters of the filename with that of the file you are trying to undelete.
If there is only one match, it is not a problem. If there is more than one match, you have to ask the user which one it is: give the date as well. The date can be picked up with the filename data from the FAT.
Once you have found the filename, find the starting block and go through all the blocks to see if they are all deallocated. If any are allocated then the file cannot be undeleted. If they are all deallocated, then just go through reallocating them.
Best test this on a floppy: you don't want to mess up your hard disk by corrupting the FAT.