Stack vs Heap
Pilha é uma lista ordenada na qual a inserção e exclusão de itens da lista podem ser feitas apenas em uma extremidade chamada de topo. Por esse motivo, a pilha é considerada como uma estrutura de dados LIFO (Last in First out). Heap é uma estrutura de dados especial baseada em árvores e que satisfaz uma propriedade especial chamada propriedade heap. Além disso, um heap é uma árvore completa, o que significa que não há lacunas entre as folhas da árvore, ou seja, em uma árvore completa, cada nível é preenchido antes de adicionar um novo nível à árvore e os nós em um determinado nível são preenchidos a partir de da esquerda para direita.
O que é Stack?
Como mencionado anteriormente, pilha é uma estrutura de dados na qual os elementos são adicionados e removidos de apenas uma extremidade chamada topo. As pilhas permitem apenas duas operações fundamentais chamadas push e pop. A operação push adiciona um novo elemento ao topo da pilha. A operação pop remove um elemento do topo da pilha. Se a pilha já estiver cheia, quando uma operação push for executada, é considerado um estouro de pilha. Se uma operação pop for executada em uma pilha já vazia, ela será considerada como um estouro negativo da pilha. Devido ao pequeno número de operações que podem ser realizadas em uma pilha, é considerada uma estrutura de dados restrita. Além disso, de acordo com a forma como as operações push e pop são definidas, é claro que os elementos que foram adicionados por último na pilha saem da pilha primeiro. Portanto, a pilha é considerada uma estrutura de dados LIFO.
O que é Heap?
Conforme mencionado anteriormente, heap é uma árvore completa que satisfaz a propriedade heap. A propriedade Heap afirma que, se y for um nó filho de x, o valor armazenado no nó x deve ser maior ou igual ao valor armazenado no nó y (isto é, valor (x) ≥ valor (y)). Essa propriedade implica que o nó com o maior valor sempre seria colocado na raiz. Um heap construído usando essa propriedade é chamado de heap máximo. Há outra variação da propriedade heap que afirma o inverso disso. (ou seja, valor (x) ≤ valor (y)). Isso implica que o nó com o menor valor sempre será colocado na raiz, assim chamado de min-heap. Há uma ampla gama de operações realizadas em heaps, como encontrar mínimo (em heaps mín) ou máximo (em heaps máximos), excluir mínimo (em heaps mín) ou máximo (em heaps máximos),aumentar (em heaps máx.) ou diminuir (em heaps mín), etc.
Qual é a diferença entre Stack e Heap?
A principal diferença entre pilhas e pilhas é que, embora pilha seja uma estrutura de dados linear, a pilha é uma estrutura de dados não linear. Stack é uma lista ordenada que segue a propriedade LIFO, enquanto o heap é uma árvore completa que segue a propriedade heap. Além disso, a pilha é uma estrutura de dados restrita que suporta apenas um número limitado de operações como push e pop, enquanto a pilha suporta uma ampla gama de operações, como localizar e excluir o mínimo ou máximo, aumentar ou diminuir a chave e mesclar.