#include <iostream>
using namespace std;

struct Node {
	int data;
	Node* pNext;
};

struct MyQueue {
    Node* pHead = nullptr;
    Node* pTail = nullptr;
    
    void enqueue(Node* pNew);
    Node* dequeue();
};

int main() {
	
	// Declaration
	MyQueue mQueue;
	
	// Enqueue operation
	{
		Node* mData = new Node;
		mData->data = 100000;
		mData->pNext = nullptr;
		mQueue.enqueue(mData);
	}
	
	// Dequeue operation
	{
		Node* mData = mQueue.dequeue();
		cout<<mData->data;
	}
	
	return 0;
}

void MyQueue::enqueue(Node* pNew) {
    if(!pHead) {
        pHead = pNew;
        pTail = pNew;
        pHead->pNext = nullptr;
    } else {
        pTail->pNext = pNew;
        pTail = pTail->pNext;
    }
}

Node* MyQueue::dequeue() {
    if(!pHead) return nullptr;
    Node* tmp = pHead;
    pHead = pHead->pNext;
    if(!pHead) pTail = nullptr;
    return tmp;
}