Listas, deques, pilhas e filas
Ligações seguras, operações nas extremidades e análise amortizada de uma fila com duas pilhas.
Ligações sem perder nós
- Frente: cria o nó já com a ligação antiga, depois muda
primeiro. - Remoção: altera primeiro a ligação de entrada, depois liberta. A ligação pode ser
primeiroouanterior.seguinte. - Ao apagar todos os iguais, revê a mesma ligação. Em
[5,5,3], avançar logo perdia o segundo 5. - Posição
kpede0<=k<tamanho. Achar a ligação custa ; religar custa .
Dupla remove nó conhecido em mas localiza por índice em . Circular com sentinela termina ao voltar à sentinela.
Cortar e juntar
separar(resto,k)quer destino vazio e distinto.k<=0leva tudo;k>=nleva nada. Corta com nulo e reparte tamanhos.- Intercala ordenadas: escolhe a menor frente, esquerda no empate, e liga o resto quando uma acaba. Sem criar nós, auxiliar .
- Custo de pior caso para entradas de tamanhos e . Não é por entrada: intercalar
[1]com[2,\dots,n]faz uma comparação e depois liga o resto.
Pilha, fila e deque
| Depois de 4, 7, 2 | Sai primeiro | Resto |
|---|---|---|
| Pilha | 2 | 7, 4 |
| Fila | 4 | 7, 2 |
Deque aceita ambas as extremidades. Array circular usa (inicio+i)%capacidade com tamanho guardado.
Duas pilhas fazem uma fila
entrada recebe; saida tem o mais antigo no topo.
- Só transfere tudo quando
saidaestá vazia. - Vazia nas duas significa fila vazia.
- Entram 3 e 5Retirar transfere e devolve 3.
entrada: 3, 5saída: vazia - Entra 8Devolve 5 sem mexer em 8.
entrada: 8saída: 5 - Esvazia saídaTransfere 8. Ordem: 3, 5, 8.
entrada: vaziasaída: vazia
Cada elemento muda de pilha uma vez por passagem. m operações custam : amortizado.
Parênteses e próximos maiores
- Fecha só com topo correspondente e pilha não vazia.
([)]falha apesar das contagens. - Próximo estritamente maior: guarda índices sem resposta por ordem não crescente. Cada índice entra e sai uma vez, logo .