Gostaria de saber se alguém pode me ajudar com esse codigo, preciso fazer ele com funções PUSH e POP relacionados a pilha, é um programa q retorna se a palvra é capicua ou não, mas ainda sou leigo em C, gostaria q vocês me ajuda-sem, mas n pode ser feito com biblioteca especifica. #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <string.h> #define MAX 81 //******************************************************************// // definição da estrutura da pilha. typedef struct { char item[MAX]; int topo; int pilha; } tPilha; //******************************************************************// void PUSH(tPilha *pilha, char ); char POP(tPilha *); int cheia(tPilha *); int vazia(tPilha *); int capicua (char *, tPilha *); //******************************************************************// int main (){ int opc; //vai digitar a escolha do que deseja fazer while (opc) { system ("cls"); // limpa tela puts ("SELECIONE UMA DAS OPCOES ABAIXO:\n"); puts ("[ 1 ] INSERIR PALAVRA OU FRASE."); puts ("[ 2 ] REMOVER A PALVRA OU FRASE."); puts ("[ 0 ] SAIR !!!!\n"); scanf("%d",&opc); // le e grava a opcao digitada/* getchar(); // segura a tela switch (opc){ // faz a escolha da opcao case 1: PUSH();{ // chamar a funcao de insercao(push) system("pause");} break; case 2: POP(pilha P); system("pause"); break; case 0: exit(0); break; } } while (palavra != '') { PUSH(pilha, palavra); i++; } if (capicua(palavra, pilha)){ puts("Capicua."); system("pause"); } else{ puts("não e Capicua"); system("pause"); } } //******************************************************************// //******************************************************************// int capicua (char *palavra, tPilha *pilha) { int capicua = 1, i; // damos o valor de 1 para capicua para podermos usar dentro do For. for (i=0; i<strlen(palavra); i++) // strlen = retorna o tamanho de uma string if (palavra != POP(pilha)) capicua = 0; // enquanto for igual continua fazendo o codigo, a partir do momento que é diferente retorna 0 encerrando a execucao do for. return capicua; //retorno de capicua como 1 para poder continuar a execucao do for. } //******************************************************************// int cheia(tPilha *pilha){ if (( pilha = (tPilha *) malloc(sizeof(tPilha)) ) == NULL ){ // se o topo da pilha for igual a null então podemos concluir que a pilha esta cheia puts("não há espaço."); // impressao q não há espaco system("pause"); return(0); //retorno zero para encerrar a execucao }else{ return(1); //retorna um para permitir a inclusao } //******************************************************************// int vazia(tPilha *); { //funcao para verificar se a pilha esta vazia if (pilha->topo == -1){ // se o indice do topo for = -1, quer dizer q a pilha esta vazia puts("Pilha vazia."); //imprime a mensagem que a pilha esta vazia system("pause"); return(0); //retorno zero para encerrar a execucao }else{ return(1); //retorna um para permitir a exclusao } } //******************************************************************// void PUSH(tPilha *pilha, char );{ // tPilha *pilha; // topodapilha = declaracao do ponteiro da pilha char palavra[80]; int i=0; // indice pilha->topo = -1; // puts("Digite o a palavra?"); gets(palavra); cheia(pilha); //funcao que verifica se a pilha esta cheia if (pilha->topo < MAX-1) { // caso o retorno da funcao seja um, quer dizer q pode inserir. pilha->topo++; pilha->item[pilha->topo]=i; } else puts("Pilha cheia."); //se o retorno da funcao cheia for zero, então imprimira essa mensagem!! } //******************************************************************// char POP(tPilha *); { vazia(pilha); // chamada da funcao que verifica se a pilha esta vazia. if (pilha->item[pilha->topo--]){ }else puts("Pilha vazia"); // se o retorno da funcao for zero, então imprimira essa mensagem!! } se alguém poder me ajudar.....