To be fair, there's no amount of thinking that will allow you to "fix" void main -- that's just a fact that you have to know (either in terms of what C expects or how the operating system interacts with your program or some equivalent).
I am also not Elysia, but one of the things that helped (in retrospect, it didn't seem like it at the time) was the fact that my data structures class was completely computer-free: no programs to turn in or even write, just pictures of lists and trees and queues and I think we did heaps, completely in pseudocode with (crappy, because we were sophomores) proofs of correctness for the algorithms. So I will second MK's suggestion of thinking about linked lists and how to make them.