You can simulate a deque using two stacks. One stack for the front, one for the back. When one is empty and you need to access it, move elements from the other.
You get amortized per operation. It's rarely needed in contests, but useful if the language doesn't have a built-in deque.
More note that, you can see that stacks and queues are fundamentally related. Deques unify both.