| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 
 | class MinStack {public:
 
 MinStack() {
 topEle = nullptr;
 }
 void push(int val) {
 if(!topEle)
 topEle = new Node(val, val);
 else
 topEle = new Node(val, min(topEle->min, val), topEle);
 }
 
 void pop() {
 auto tmp = topEle;
 topEle = tmp->next;
 delete tmp;
 }
 
 int top() {
 return topEle->val;
 }
 
 int getMin() {
 return topEle->min;
 }
 private:
 struct Node {
 int val;
 int min;
 Node* next;
 Node () : val(0), min(INT_MAX), next(nullptr) {}
 Node (int val, int min) : val(val), min(min), next(nullptr) {}
 Node (int val, int min, Node* next) : val(val), min(min), next(next) {}
 };
 Node* topEle;
 };
 
 
 
 
 
 
 
 
 
 
 |