Last Updated : 23 Jul, 2025
A doubly ended queue or deque allows insertion and deletion at both ends. In a stack, we need to do insertions and deletions at one end only. We can use either end of deque (front or back) to implement a stack,
DequeIn the below implementation, we use back (or rear) of stack to do both insertions and deletions. Please note that the time complexities of all the operations (insertions and deletions at both ends) in a deque is O(1). So the time complexity of the below implementation is O(1) only.
#include <iostream>
#include <deque>
using namespace std;
int main() {
deque<int> stack;
stack.push_back(10);
stack.push_back(20);
stack.push_back(30);
cout << stack.back() << " popped from deque" << endl;
stack.pop_back();
cout << "Top element is: " << stack.back() << endl;
return 0;
}
Java
import java.util.*;
class GfG {
public static void main(String[] args) {
Deque<Integer> stack = new ArrayDeque<>();
stack.push(10);
stack.push(20);
stack.push(30);
System.out.println(stack.pop() + " popped from stack");
System.out.println("Top element is: " + stack.peek());
}
}
Python
from collections import deque
stack = deque()
stack.append(10)
stack.append(20)
stack.append(30)
print(f'{stack.pop()} popped from stack')
print(f'Top element is: {stack[-1]}' if stack else 'Stack is empty')
30 popped from deque Top element is: 20
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4