There's no concept of a data structure "being in" a library. The code that manipulates it is in the library, the data structure is just in the program's address space.
It seems like your question to me is, how do you initialize the hash table before the program starts using it. My answer would depend on whether you can add any new functions to the API you've been given.
EDIT: I'd do something like this in the library:
Code:
static int initialized = 0;
static void doInitialization()
{
if(!initialized)
{
// initialize the hash table
}
initialized = 1;
}
void Function1()
{
doInitialization();
...
}
void Function2()
{
doInitialization();
...
}
The much preferred solution would be to give the user of the library a chance to call the initialization itself, but your professor probably won't allow that, so you have to do something stupid.