Pilha vs Pilha
Stack é uma lista ordenada na qual a inserção e a exclusão de itens da lista podem ser feitas apenas em uma extremidade chamada de topo. Por esse motivo, a pilha é considerada 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 de 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 de da esquerda para a 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 de push for executada, ela será considerada um estouro de pilha. Se uma operação pop é executada em uma pilha já vazia, ela é considerada um estouro de pilha. Devido ao pequeno número de operações que podem ser realizadas em uma pilha, ela é considerada uma estrutura de dados restrita. Além disso, de acordo com a forma como as operações push e pop são definidas, fica claro que os elementos que foram adicionados por último na 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 afirma que, se y é um nó filho de x, então o valor armazenado no nó x deve ser maior ou igual ao valor armazenado no nó y (ou seja, valor(x) ≥ valor(y)). Esta propriedade implica que o nó com o maior valor seja sempre 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 seria colocado na raiz, assim chamado de heap mínimo. Há uma ampla gama de operações realizadas em heaps, como encontrar o mínimo (em heaps mínimo) ou máximo (em heaps máximos), excluir o mínimo (em heaps mínimo) ou máximo (em heaps máximos), aumentar (em heaps máximos) -heaps) ou decrescente (em min-heaps), etc.
Qual é a diferença entre Stack e Heap?
A principal diferença entre pilhas e heaps é que enquanto pilha é uma estrutura de dados linear, heap é 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 variedade de operações, como localizar e excluir o mínimo ou o máximo, aumentar ou diminuir a chave e mesclar.