Hello, I'm doing a Stack (LIFO) and it does not replace the values by 0 at the time of removing the values from the stack. This was a way I found to "remove" the data from it and the display is shown with the values "1.9".
#include <stdio.h>
#include <stdlib.h>
#define TAMANHO_MAX_PILHA 10
typedef struct {
int totalElementos;
float pilha[TAMANHO_MAX_PILHA];
} PILHA;
PILHA *CriarPilha() {
PILHA *ppilha;
ppilha = (PILHA *) malloc(sizeof(PILHA));
ppilha->totalElementos = 0;
return ppilha;
}
void Listar(PILHA *ppilha) {
int totalElementos = ppilha->totalElementos;
int indiceTopoPilha = totalElementos - 1;
for (int indiceVetor = indiceTopoPilha; indiceVetor >= 0 ; indiceVetor--) {
float elemento = ppilha->pilha[indiceVetor];
printf("Posição %i = %f \n", indiceVetor + 1, elemento);
}
}
float Push(PILHA *ppilha, float novoElemento) {
int totalElementos = ppilha->totalElementos;
if(totalElementos == TAMANHO_MAX_PILHA){
printf("Pilha Cheia");
} else {
for (int indiceVetor = totalElementos; indiceVetor <= TAMANHO_MAX_PILHA - 1; indiceVetor++) {
ppilha->pilha[indiceVetor] = novoElemento;
ppilha->totalElementos++;
}
}
}
float Pop(PILHA *ppilha) {
int totalElementos = ppilha->totalElementos;
int indiceTopoPilha = totalElementos - 1;
if(totalElementos != 0) {
for (int indiceVetor = indiceTopoPilha; indiceVetor < 0 ; indiceVetor--) {
ppilha->pilha[indiceVetor] = 0.5;
ppilha->totalElementos--;
}
} else {
printf("Pilha Vazia");
}
}
void main() {
PILHA *ppilha;
float novoElemento = 1.9;
ppilha = CriarPilha();
Push(ppilha, novoElemento);
Listar(ppilha);
printf("-------------------------------------------------------------------\n");
Pop(ppilha);
Listar(ppilha);
}