In Swift, you can implement a stack using an array or by creating a custom stack class. Below is a simple example of a stack implementation using a class that provides the necessary operations like push, pop, and peek.
class Stack {
private var elements: [Element] = []
// Push an element onto the stack
func push(_ element: Element) {
elements.append(element)
}
// Pop an element off the stack
func pop() -> Element? {
return elements.popLast()
}
// Peek at the top element of the stack
func peek() -> Element? {
return elements.last
}
// Check if the stack is empty
func isEmpty() -> Bool {
return elements.isEmpty
}
// Get the size of the stack
func size() -> Int {
return elements.count
}
}
// Example usage
let stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.pop()) // Outputs: 3
print(stack.peek()) // Outputs: 2
print(stack.isEmpty()) // Outputs: false
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?