4
I am studying stacks and queues, below I was given a code to analyze. The code first creates queue then queues the values. After this, it removes each of the values from the queue and warns whether or not it was successful by removing the value.
What I didn’t understand was the meaning of the node, whether it’s a pointer-storing struct or something.
Code:
#include<stdio.h>
#include<stdlib.h>
typedef struct nodo
{
float dado;
struct nodo *proximo;
} Nodo;
int push(Nodo **inicio, float dado) {
Nodo *nodo;
if ((nodo = (Nodo *) malloc(sizeof(Nodo))) == NULL)
return 0;
nodo->dado = dado;
nodo->proximo = NULL;
if (*inicio != NULL)
nodo->proximo = *inicio;
*inicio = nodo;
return 1;
}
int pop(Nodo **inicio, float *dado) {
if (*inicio == NULL)
return 0;
else {
Nodo *auxiliar = *inicio;
*dado = (*inicio)->dado;
*inicio = (*inicio)->proximo;
free(auxiliar);
}
return 1;
}
void DestroiLista(Nodo **inicio) {
Nodo *ptrAux;
while (*inicio != NULL) {
ptrAux = *inicio;
*inicio = ptrAux->proximo;
printf("Destruindo %.1f\n",ptrAux->dado);
free(ptrAux);
}
}
int main( ) {
int i;
float dado;
Nodo *pilha = NULL;
push(&pilha, 5);
push(&pilha, 2);
push(&pilha, 7);
push(&pilha, 6);
for (i=0;i<6;i++) {
if (pop(&pilha,&dado))
printf("Deu certo remover o valor %f da fila\n",dado);
else
printf("Nao deu certo remover um elemento da pilha\n");
}
DestroiLista(&pilha);
return 0;
}