# Write a Python program to Stack using Doubly Linked List # A complete working Python program to demonstrate all # stack operations using a doubly linked list   # Node class class Node:  # Function to initialise the node object    def __init__(self, data):        self.data = data # Assign data        self.next = None # Initialize next as null        self.prev = None # Initialize prev as null                  # Stack class contains a Node objectclass Stack:    # Function to initialize head     def __init__(self):        self.head = None          # Function to add an element data in the stack     def push(self, data):          if self.head is None:            self.head = Node(data)        else:            new_node = Node(data)            self.head.prev = new_node            new_node.next = self.head            new_node.prev = None            self.head = new_node                            # Function to pop top element and return the element from the stack     def pop(self):          if self.head is None:            return None        elif self.head.next is None:            temp = self.head.data            self.head = None            return temp        else:            temp = self.head.data            self.head = self.head.next            self.head.prev = None            return temp        # Function to return top element in the stack     def top(self):          return self.head.data    # Function to return the size of the stack     def size(self):          temp = self.head        count = 0        while temp is not None:            count = count + 1            temp = temp.next        return count            # Function to check if the stack is empty or not      def isEmpty(self):          if self.head is None:           return True        else:           return False                # Function to print the stack    def printstack(self):                  print("stack elements are:")        temp = self.head        while temp is not None:            print(temp.data, end ="->")            temp = temp.next                       # Code execution starts here         if __name__=='__main__':   # Start with the empty stack  stack = Stack()  # Insert 4 at the beginning. So stack becomes 4->None   print("Stack operations using Doubly LinkedList")  stack.push(4)  # Insert 5 at the beginning. So stack becomes 4->5->None   stack.push(5)  # Insert 6 at the beginning. So stack becomes 4->5->6->None   stack.push(6)  # Insert 7 at the beginning. So stack becomes 4->5->6->7->None   stack.push(7)  # Print the stack  stack.printstack()  # Print the top element  print("\nTop element is ", stack.top())  # Print the stack size  print("Size of the stack is ", stack.size())  # pop the top element  stack.pop()  # pop the top element  stack.pop()    # two elements are popped# Print the stack  stack.printstack()    # Print True if the stack is empty else False  print("\nstack is empty:", stack.isEmpty())  #This code is added by Suparna Raut