C Program To Find Palindrome

//Palindrome for integers

#include <stdio.h>

int main() 
{
  int num, rev = 0, rem, orig;
    printf("Input integer number: ");
    scanf("%d", &num);
    orig = num;

       while (num != 0) 
    {
        rem = num % 10;
        rev = rev * 10 + rem;
        num /= 10;
    }

       if (orig == rev)
      printf("%d is a palindrome_integer.", orig);
    else
      printf("%d is not a palindrome_integer.", orig);

    return 0;
}
Output:

Input integer string
111
111 is a palindrome_integer

//Palindrome for strings

#include <stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
  char p[100];
  int i,b, m, e, l = 0;

  printf("Input character string");
 
  gets(p);

  while (p[l] != '\0')
    l++;

  e = l - 1;
  m = l/2;

  for (b = 0; b < m; b++)
  {
    if (p[b] != p[e])
    {
      printf("Input character string is not a palindrome.\n");
      break;
    }
    e--;
  }
  if (b == m)
    printf("Input character string is Palindrome.\n");

  return 0;
}
Output:

Input character string
Civic
Input character string is not a palindrome.

//checking palindrome using string functions

#include <stdio.h>
#include <string.h>
#include<stdlib.h>

int main()
{
  char a[10], b[10],rev[10];
  int i;

  printf("Enter a string to check if it's a palindrome\n");
  scanf("%s",&*a);
   
  strcpy(b, a);
 
  long int length = strlen(b);
  for(i=0; i<length; ++i)
   {
       rev[length-i-1] = b[i];
   }
   
  if (strcmp(a, rev) == 0)  
    printf("The string is a palindrome.\n");
  else
   printf("The string isn't a palindrome.\n");

  return 0;
}

//checking palindrome using stack and queue 


#include <stdio.h>

#include <stdlib.h>




struct plaindrome_Node{

char data;

struct plaindrome_Node *p_next;

};




typedef struct plaindrome_Node *node_ptr;




struct plaindrome_Node* get_Node()

{

struct plaindrome_Node *new_Node = (struct plaindrome_Node*)malloc(sizeof(struct plaindrome_Node));

return new_Node;

}




void freeNode(node_ptr *p_q)

{

free(p_q);

}





void push(node_ptr *p_q, char p_x)

{

node_ptr f = *p_q;

*p_q = get_Node();

(*p_q)->data = p_x;

(*p_q)->p_next = f;

}




char pop_q(node_ptr *p_q)

{

node_ptr f = *p_q;

char p_val = 0;

if(f == NULL)

{

//Blah blah

return p_val;

}

if(f -> p_next == NULL)

{

p_val = f->data;

*p_q = NULL;

return p_val;

}

else

{

//Traverse to last node

while((f->p_next)->p_next != NULL)

{

f = f->p_next;

}

p_val = (f->p_next) -> data;

f -> p_next = NULL;

free(f -> p_next);

return p_val;

}

}




char pop_stack(node_ptr *p_s)

{

node_ptr f = *p_s;

char p_val = 0;

if(f == NULL)

{

//Blah blah

return p_val;

}

else

{

p_val = f -> data;

*p_s = f -> p_next;

return p_val;

}

}





int main()

{

node_ptr p_Queue;

node_ptr p_Stack;




char strr[32];

char b,f;




int i;




p_Queue = 0;

p_Stack = 0;




printf("%s\n","Input string");

scanf("%s",strr);




//insert into queue and stack

i = 0;

while((b = strr[i]) != '\0')

{

push(&p_Queue, b);

push(&p_Stack, b);

i++;

}




//pop and check

i = 1; //Assume palindrome

b = 1;

f = 1;

while(b != 0 && f != 0 && i == 1)

{

b = pop_stack(&p_Stack);

f = pop_q(&p_Queue);




if(b != f)

i = 0;




}




if(i == 1)

printf("Input string is a palindrome\n");

else

printf("Input string is not a palindrome\n");




return 0;

}

Output:

Input character string
Civic
Input string is a palindrome