>>how can I develop a queue struct atop of the program that allows me to make instances of queue.c?
This phrase: instances of queue.c, is probably more correctly stated as: instances of type queue. That's because queue.c is a file that contains information about how the user declared queue type as written here: typedef struct queue, is implemented, and you declare instances of the type, not instances of the file. That's a bit nit picky, but probably worth learning.
You've already declared an instance of type queue. It's called Queue. Therefore Queue has all the properties of a queue object (instance of type queue). Since Queue was declared at the time of declaring the user defined type, it is a global object and can be used anywhere by any function in your program. You could limit the scope of a queue object by declaring it within main() or some other function. I believe the syntax of C is that all objects of a given scope need to be declared at the beginning of the function within which it is declared, and not anywhere before it is used as in C++. To declare a queue object somewhere other than at the end of the type declaration you can do this:
#include "queue.h" /*note that you include the header file, not the implementation file containing the user declaration for type queue*/
queue Q; /*Q is an instance of type queue with global scope*/
/*S is a queue with scope limited to the function called example*/
queue example(queue S)
{
queue T; /*T is a queue with scope limited to the function called example*/
/*do whatever you want to T or S or whatever here*/
return T;
}
int main()
{
queue R; /*R is an instance of type queue with scope within the function main()*/
example(R); /*pass R to example()*/
example(Q); /*Q has global scope*/
example(Queue); /*Queue has global scope as it is declared in queue.h, immediately after declaring the queue type*/
return 0;
}
I believe there is a rule that if you don't use the keyword typedef before declaring the user defined type in C that you need to use the keyword struct before each declaration of an instance of that type, unless you declare the instance immediately after the declaration of the type, as you did with Queue. But, I don't use C much, so that belief may be in error.