#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct tipopilha
{
char dado[5];
struct tipopilha *prox;
};
void inicializapilha (struct tipopilha **pilha)
{
*pilha=NULL;
return;
}
int pilhavazia (struct tipopilha *pilha)
{
if (pilha==NULL)
return 1;
else
return 0;
}
char tipopilha (struct tipopilha *pilha)
{
return pilha ->dado[5];
}
void inserepilha (struct tipopilha **pilha, char dadonovo[5])
{
struct tipopilha *p1;
p1=malloc (sizeof(struct tipopilha));
strcpy (p1->dado,dadonovo); /* Copia dadonovo em p1->dado */
p1->prox=*pilha;
*pilha=p1;
// printf ("dado (insere) = %s\n", p1->dado); ESTA LINHA FOI COLOCADA PARA TESTAR A VARIAVEL NESTE PONTO
// printf ("dadonovo (insere) = %s\n", dadonovo); ESTA LINHA FOI COLOCADA PARA TESTAR A VARIAVEL NESTE PONTO
// printf ("*pilha (insere) = %s\n",*pilha); ESTA LINHA FOI COLOCADA PARA TESTAR A VARIAVEL NESTE PONTO
// printf ("*p1 (insere) = %s\n",p1); ESTA LINHA FOI COLOCADA PARA TESTAR A VARIAVEL NESTE PONTO
return;
}
int retirapilha (struct tipopilha **pilha)
{
struct tipopilha *p1;
char car[5];
p1=*pilha;
*pilha=p1->prox;
strcpy (car,p1->dado); /* Copia p1->dado em car */
free(p1);
// printf ("\ncar (retira) = %s\n", car); ESTA LINHA FOI COLOCADA PARA TESTAR A VARIAVEL NESTE PONTO
// printf ("*pilha (retira) = %s\n",*pilha); ESTA LINHA FOI COLOCADA PARA TESTAR A VARIAVEL NESTE PONTO
// printf ("*p1 (retira) = %s\n",(p1->prox)); ESTA LINHA FOI COLOCADA PARA TESTAR A VARIAVEL NESTE PONTO
return car;
}
int main ()
{
char dado[5];
struct tipopilha *p1;
int i;
inicializapilha (&p1);
for (i=1;i<=5;i++)
{
printf ("\nDigite o %i Dado: ",i);
scanf ("%s",&dado);
inserepilha(&p1,dado);
}
printf ("\n");
while (!pilhavazia(p1))
{
printf (" Posiçao %5i dado %5s\n",i=i-1, retirapilha (&p1)); /* AQUI DEVERIA RETORNAR O VALOR EXISTENTE NA POSIÇÃO QUE ESTA SENDO "LIMPADA"*/
}
system("PAUSE");
return 0;
}
inicialmente ele apresentou o erro de so guardar o primeiro caracter da string, isto foi ressolvido usando strcpy.
antes de usar esta função o retorno era exatamente o que eu queria, nesta linha ele retornava o valor que estava sendo retirado:
printf ("\n");
while (!pilhavazia(p1))
{
printf (" Posiçao %5i dado %5s\n",i=i-1, retirapilha (&p1)); /* AQUI DEVERIA RETORNAR O VALOR EXISTENTE NA POSIÇÃO QUE ESTA SENDO "LIMPADA"*/
}
só que agora ele me retorna o seguinte:
poisção X dado (exibe um caracter que eu chamo de cara de gato, rsrsrsrs)
Pergunta
cleyvison
Caros amigos,
Fiz o seguinte programa:
inicialmente ele apresentou o erro de so guardar o primeiro caracter da string, isto foi ressolvido usando strcpy. antes de usar esta função o retorno era exatamente o que eu queria, nesta linha ele retornava o valor que estava sendo retirado:só que agora ele me retorna o seguinte:
poisção X dado (exibe um caracter que eu chamo de cara de gato, rsrsrsrs)
alguém pode me ajudar?
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.