Python Stack Linked List Solution (Easy to Understand)
\nclass Node:\n    def __init__(self, val=None, mini=None, next=None):\n        # Initialize Node\n        self.val = val\n        self.minimum = mini\n        
```\nclass Node:\n    def __init__(self, val=None, mini=None, next=None):\n        # Initialize Node\n        self.val = val\n        self.minimum = mini\n        self.next = next\n\nclass MinStack:\n\n    def __init__(self):\n        """\n        initialize your data structure here.\n        """\n        self.head = None\n        \n\n    def push(self, x: int) -> None:\n\t# insert at beginning of the list\n\t# check if head is Null\n        if self.head is None:\n            node = Node(x, x)\n            self.head = node\n        else:\n\t\t# using min inbuilt function to check for minimum value between the current inserted value and previous minimum value\n            node = Node(x, min(x, self.head.minimum), self.head)\n            self.head = node\n        \n\n    def pop(self) -> None:\n\t# just change the head pointer to next node\n        self.head = self.head.next\n        \n\n    def top(self) -> int:\n\t# returns top of the linked list\n        return self.head.val\n        \n\n    def getMin(self) -> int:\n\t# returns minimum value\n        return self.head.minimum\n```
['Python', 'Python3']