Menu Close

Implement Queue via Stack

Follow me on : YoutubeFacebook

Đây là một bài cũng thường gặp trong interview vào các công ty công nghệ

Problem:

Xây dựng cấu trúc dữ liệu Queue bằng Stack

Solution:

template < class T >
class Queue{
	private:
		stack< T > s1;
		stack< T > s2;
	public:
		Queue(){}
		void add(T data){
			s1.push(data);
		}
		void remove(){

			shiftStack();
			s2.pop();
		}
		T peek(){
			shiftStack();
			return s2.top();
		}
		bool isEmpty(){
			return s1.empty()&&s2.empty();
		}
		void shiftStack(){
			if(s2.empty()){
				while(!s1.empty()){
					s2.push(s1.top());
					s1.pop();
				}
			}
		}

};

Leave a Reply

Your email address will not be published. Required fields are marked *