/****************************
* Umang B Bhatt *
* bhatt.umang7@gmail.com *
*****************************/
/**
* program for general palindrome string
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
#define TRUE 1
#define FALSE 0
int push(char *s, int top, char ele)
{
int i;
if (top >= MAX)
{
printf("\nStack Overflow");
}
else
{
s[++top] = ele;
}
return top;
}
int pop(char *a, int *top)
{
if ((*top) >= 0)
{
(*top) = (*top) - 1;
return a[(*top) + 1];
}
else
{
printf("Stack underflow\n");
return 0;
}
}
void main()
{
int i;
char a, b;
char c[MAX];
int valid = TRUE;
int TOP = -1;
char s[MAX];
printf("Enter string: ");
gets(c);
//remember that using gets() function is not safe.
for (i = 0; i < strlen(c) / 2; i++)
{
TOP = push(s, TOP, c[i]);
}
for (; c[i] != '\0'; i++)
{
if (TOP < 0)
{
valid = FALSE;
break;
}
else
{
a = pop(s, &TOP);
if (c[i] != a)
{
valid = FALSE;
}
}
}
if (valid == TRUE)
{
printf("Valid palindrome string\n");
}
else
{
printf("Invalid palindrome string\n");
}
}
Showing posts with label wcwr palindrome using stack. Show all posts
Showing posts with label wcwr palindrome using stack. Show all posts
Wednesday, December 29, 2010
general palindrome check using stack
Labels:
C,
C program,
D.S,
data structure,
DS,
general palindrome,
wcwr palindrome using stack
wcwr palindrome using stack
/****************************
* Umang B Bhatt *
* bhatt.umang7@gmail.com *
*****************************/
/**
* program for wcwr palindrome string
*/
#include<stdio.h>
#define MAX 100
#define TRUE 1
#define FALSE 0
int push(char *s, int top, char ele)
{
int i;
if (top >= MAX)
{
printf("\nStack Overflow");
} else
{
s[++top] = ele;
}
return top;
}
int pop(char *a, int *top)
{
if ((*top) >= 0)
{
(*top) = (*top) - 1;
return a[(*top) + 1];
} else
{
printf("Stack underflow\n");
return 0;
}
}
void main()
{
int i;
char a, b;
char c[MAX];
int valid = TRUE;
int TOP = -1;
char s[MAX];
//remember that declraing the stack as global is not a good practice (according to my openion)
printf("Enter string: ");
gets(c);
TOP = push(s, TOP, 'c');
for (i = 0; c[i] != 'c'; i++) // you can modify this string as you want
{ // some people may modify to go upto n/2 etc
TOP = push(s, TOP, c[i]);
}
i++;
for (; c[i] != '\0'; i++)
{
if (TOP < 0)
{
valid = FALSE;
break;
} else
{
a = pop(s, &TOP);
if (c[i] != a)
{
valid = FALSE;
}
}
}
if (TOP == 0)
{
a = pop(s, &TOP);
if (a != 'c')
{
valid = FALSE;
}
} else
{
valid = FALSE;
}
if (valid == TRUE)
{
printf("Valid palindrome string\n");
} else
{
printf("Invalid palindrome string\n");
}
}
Labels:
C,
C program,
D.S,
data structure,
DS,
wcwr,
wcwr palindrome using stack
Subscribe to:
Posts (Atom)