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, todos os níveis são preenchidos antes de adicionar um novo nível à árvore e os nós em um determinado nível são preenchidos a partir de uma árvore. esquerda para a direita.
O que é Stack?
Como mencionado anteriormente, a pilha é uma estrutura de dados na qual os elementos são adicionados e removidos de apenas uma extremidade chamada de 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 da parte superior da pilha. Se a pilha já estiver cheia, quando uma operação push for executada, ela será considerada um estouro de pilha. Se uma operação pop for executada em uma pilha já vazia, ela será considerada um fluxo insuficiente de pilha. Devido ao pequeno número de operações que podem ser executadas em uma pilha, ela é considerada uma estrutura de dados restrita. Além disso, de acordo com a maneira como as operações push e pop são definidas, fica claro que os elementos que foram adicionados por último à pilha saem primeiro da pilha. Portanto, a pilha é considerada uma estrutura de dados LIFO.
O que é Heap?
Como mencionado anteriormente, heap é uma árvore completa que satisfaz a propriedade heap. A propriedade Heap indica que, se y é um nó filho de x, o valor armazenado no nó x deve ser maior ou igual ao valor armazenado no nó y (ou seja, valor (x) ≥ valor (y)). Essa propriedade implica que o nó com o maior valor sempre seja colocado na raiz. Um heap construído usando essa propriedade é chamado de max-heap. Há outra variação da propriedade heap que indica o inverso disso. (ou seja, valor (x) ≤ valor (y)). Isso implica que o nó com o menor valor sempre seria colocado na raiz, assim chamado min-heap. Há uma ampla variedade de operações executadas em pilhas, como encontrar o mínimo (em min-heaps) ou o máximo (em max-heaps), excluir o mínimo (em min-heaps) ou o máximo (em max-heaps), aumentando (em max -heaps) ou tecla decrescente (em min-heaps), etc..
Qual é a diferença entre Stack e Heap?
A principal diferença entre pilhas e pilhas é que, embora a 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 o heap suporta uma ampla gama de operações, como encontrar e excluir o mínimo ou o máximo, aumentar ou diminuir a chave e mesclar.