3 stacks implementation
This problem was asked by Microsoft.
Implement 3 stacks using a single list:
class Stack:
def __init__(self):
self.list = []
def pop(self, stack_number):
pass
def push(self, item, stack_number):
pass
My Solution(C++):
#include <iostream>
#include <vector>
struct Stack{
std::vector<std::vector<int>> list;
Stack(){}
void push(int data, int stack_no){
if (stack_no>=this->list.size()){
std::vector<int> S;
S.push_back(data);
this->list.push_back(S);
}
else{
std::vector<int> S = this->list[stack_no];
S.push_back(data);
}
}
int pop(int stack_no){
std::vector<int> S = this->list[stack_no];
int data = S.back();
S.pop_back();
return data;
}
};
void test(){
Stack S;
S.push(10, 0);
S.push(20, 1);
S.push(30, 2);
S.push(40, 0);
std::cout << S.pop(0) << std::endl;
}
int main(){
test();
return 0;
}