Let the free_stack be a linked list.

Which solves it!
Let the call stack be a doubly linked list.
Keep the variables list as a singly linked list.