Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
As pilhas, ou stacks, são estruturas de dados fundamentais na ciência da computação, usadas para armazenar e gerenciar dados de forma linear, seguindo o princípio LIFO (Last In, First Out). No desenvolvimento para iOS, especialmente ao programar em Swift, as pilhas podem ser úteis em diversas situações, como na navegação entre telas ou na execução de algoritmos.
Exemplos:
Implementação Básica de uma Pilha em Swift
Vamos criar uma classe simples que representa uma pilha em Swift. Esta pilha irá armazenar elementos genéricos, permitindo que qualquer tipo de dado seja empilhado e desempilhado.
struct Stack<Element> {
private var items: [Element] = []
mutating func push(_ item: Element) {
items.append(item)
}
mutating func pop() -> Element? {
return items.popLast()
}
func peek() -> Element? {
return items.last
}
func isEmpty() -> Bool {
return items.isEmpty
}
}
// Exemplo de uso:
var stack = Stack<Int>()
stack.push(1)
stack.push(2)
print(stack.pop() ?? "Pilha vazia") // Saída: 2
print(stack.peek() ?? "Pilha vazia") // Saída: 1
Uso de Pilhas na Navegação de View Controllers
No desenvolvimento de aplicativos iOS, a navegação entre telas pode ser gerenciada como uma pilha. O UINavigationController, por exemplo, utiliza uma pilha para empurrar e retirar view controllers.
// Empurrar um novo view controller na pilha de navegação
let newViewController = UIViewController()
navigationController?.pushViewController(newViewController, animated: true)
// Retirar o view controller do topo da pilha
navigationController?.popViewController(animated: true)
Exemplo de Algoritmo com Pilha: Verificação de Parênteses Balanceados
Um uso clássico de pilhas é verificar se uma sequência de parênteses está balanceada.
func isBalanced(_ expression: String) -> Bool {
var stack = Stack<Character>()
for char in expression {
if char == "(" {
stack.push(char)
} else if char == ")" {
if stack.isEmpty() {
return false
}
stack.pop()
}
}
return stack.isEmpty()
}
// Exemplo de uso:
print(isBalanced("(())")) // Saída: true
print(isBalanced("(()")) // Saída: false