Welcome to an exciting exploration of two fundamental data structures: Stacks and Queues! Remember, data structures store and organize data in a manner that is structured and efficient. Stacks and Queues are akin to stacking plates and standing in a line, respectively. Intriguing, isn't it? Let's dive in!
ArrayDeque (Double-Ended Queue) is a versatile data structure that combines the features of both Stack and Queue. It provides efficient methods for adding and removing elements from both ends of the collection:
-
Stack Operations:
addLast(): Adds an element to the end (top of stack)removeLast(): Removes and returns the last element (top of stack)
-
Queue Operations:
addLast(): Adds an element to the end of queueremoveFirst(): Removes and returns the first element
Additional useful methods include:
isEmpty(): Checks if the collection is emptysize: Returns the number of elementsfirst(): Views the first element without removing itlast(): Views the last element without removing it
A Stack adheres to the "Last In, First Out" or LIFO principle. It's like a pile of plates where the last plate added is the first one to be removed. Kotlin uses ArrayList to create a stack, with add() used for push, and removeAt(size - 1) used for pop.
A Stack adheres to the "Last In, First Out" or LIFO principle. Let's explore this using a pile of plates:
In this implementation:
- We use
ArrayDequeto store our plates addPlate()usesaddLast()to push a plate onto the top of the stackremovePlate()usesremoveLast()to pop the top plate off the stack- We check for empty stack to prevent errors
- The main function demonstrates how the last plate added is the first one removed (LIFO principle)
