/*Autora:Camacho Bolaños Angelica Miriam.
Descripción: Programa que indica si una palabra es palindroma o no mediante estructura de datos*/
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct nodop { char palabra[15]; };
struct nodo { struct nodop pal; struct nodo *siguiente; };
typedef struct nodo *COLA;
struct nodoPILA { struct nodop pal2; struct nodoPILA *siguiente2; };
typedef struct nodoPILA *PILA;
void crear(COLA *inicio, COLA *final)
{
(*inicio)=NULL;
(*final)=NULL;
}
void crearPILA(PILA *inicio)
{
(*inicio)=NULL;
}
int vacia(COLA inicio)
{
if(inicio==NULL){
return 1;
}
else
{return 0;
}
}
void ingresar(COLA *inicio, COLA *final, char palabra)
{
COLA nuevo;
nuevo=(COLA)malloc(sizeof(struct nodo));
nuevo->pal.palabra[0]=palabra;
nuevo->siguiente=NULL;
if((*final)==NULL)
{
(*final)=nuevo;
(*inicio)=nuevo;
}
else
{
(*final)->siguiente=nuevo;
(*final)=(*final)->siguiente;
}
}
void ingresarPILA(PILA *inicio, char palabra)
{
PILA nuevo;
nuevo=(PILA)malloc(sizeof(struct nodoPILA));
nuevo->pal2.palabra[0]=palabra;
nuevo->siguiente2=NULL;
if((*inicio)==NULL)
{
(*inicio)=nuevo;
}
else
{
nuevo->siguiente2=(*inicio);
(*inicio)=nuevo;
}
}
char mostrar(COLA *inicio, COLA *final)
{
COLA q;
char a;
//printf("\n %f", (*inicio)->pal.palabra);
a=(*inicio)->pal.palabra[0];
if((*inicio)->siguiente==NULL)
{
free(*inicio);
(*inicio)=NULL;
(*final)=NULL;
}
else
{
q=(*inicio);
(*inicio)=(*inicio)->siguiente;
q->siguiente=NULL;
free(q);
}
return a;
}
char mostrarPILA(PILA *inicio)
{
PILA q;
char b;
b=(*inicio)->pal2.palabra[0];
//printf("\nValor inicio = %f - palabra: %s ", (*inicio)->pal2.palabra);
if((*inicio)->siguiente2==NULL)
{
free(*inicio);
(*inicio)=NULL;
}
else
{
q=(*inicio);
(*inicio)=(*inicio)->siguiente2;
q->siguiente2=NULL;
free(q);
}
return b;
}
void main()
{
struct nodop pal;
COLA inicio;
COLA final;
PILA inicio2;
char a,b;
int i,e,igual;
igual=0;
i=0;
e=0;
clrscr();
crear(&inicio,&final);
crearPILA(&inicio2);
printf("\n\t Por favor ingrese la palabra que se va a evaluar: ");
gets(pal.palabra);
e=strlen(pal.palabra);
do {
a=pal.palabra[i];
ingresar(&inicio,&final,a);
ingresarPILA(&inicio2,a);
i++;
}
while(i<e);
while(!vacia(inicio) && igual==0)
{
a=mostrar(&inicio, &final);
b=mostrarPILA(&inicio2);
printf("\na = %c - b = %c", a, b);
if(a!=b)
igual=1;
}
if(igual==1){
printf("\nEsta palabra no es palindrome");
}
else
{printf("\nSi es palindrome");
}
}
No hay comentarios:
Publicar un comentario