If it's a static array, stack size is not being concerned as it will be allocated as part of the data section of your program and not on the stack. If you however mentioned "static" just accidentally or meaning "not by alloc (..)" then this explanation might be right. In that case I would recommend to use the head anyway. So allocate it by
data_node* pNodes;
...
pNodes = alloc (sizeof (data_node) * 131072);
...
free (pNodes);