Instead of using array, we can also use linked list to implement stack. A lista ligada aloca a memória dinamicamente. No entanto, a complexidade de tempo em ambos os cenários é a mesma para todas as operações, ou seja, push, pop e peek.
na implementação da lista ligada da pilha, os nós são mantidos não contiguosamente na memória. Cada nó contém um ponteiro para o seu nó sucessor imediato na pilha. Stack é dito ser overflown se o espaço deixado no heap de memória não é suficiente para criar um nó.
the top most node in the stack always contains null in its address field. Vamos discutir a forma como, cada operação é realizada na implementação de lista vinculada da pilha.
adicionar um nó à pilha (Push operation)
adicionar um nó à pilha é referido como push operation. Empurrar um elemento para uma pilha na implementação de lista vinculada é diferente da de uma implementação de array. A fim de empurrar um elemento para a pilha, os seguintes passos estão envolvidos.
- criar um nó primeiro e alocar memória a ele.
- se a lista estiver vazia, então o item deve ser empurrado como o nó inicial da lista. Isto inclui atribuir valor à parte de dados do nó e atribuir null à parte de endereço do nó.
- se já existem alguns nós na lista, então temos que adicionar o novo elemento no início da lista (para não violar a propriedade da pilha). Para este propósito, atribua o endereço do elemento inicial ao campo de endereço do novo nó e faça o novo nó, o nó inicial da lista.
- Verificar a condição de underflow: A condição de underflow ocorre quando tentamos pop, já pilha vazia. A pilha ficará vazia se o ponteiro principal da lista apontar para nulo.
- Ajustar o ponteiro de cabeça de acordo: Na pilha, os elementos são exibidos, apenas de um lado, portanto, o valor armazenado no ponteiro de cabeça deve ser excluído e o nó deve ser liberada. O nó seguinte do nó da cabeça torna-se agora o nó da cabeça.
- Copie o ponteiro da cabeça para um ponteiro temporário.
- mova o ponteiro temporário através de todos os nós da lista e imprime o campo de valores ligado a cada nó.
Tempo de Complexidade : o(1)
C implementação :
Exclusão de um nó da pilha (POP operação)
Exclusão de um nó a partir do topo da pilha é conhecido como operação pop. A exclusão de um nó da implementação da lista vinculada da pilha é diferente da implementação da matriz. A fim de pop um elemento da pilha, devemos seguir os seguintes passos :
Complexidade Temporal : s(n)
C implementação
Apresentar os nós (Poligonal)
Exibir todos os nós de uma pilha precisa percorrer todos os nós da lista ligada organizado na forma de pilha. Para isso, temos de seguir os seguintes passos.
Complexidade Temporal : o (n)