Palindrome Using C Programming

Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

/*This program will recognise a string input by user is in the language L, where L = {w$w': w is a possibly empty string of characters

other than $, w' = reverse(w)}*/ #include <stdio.h> /* Define standard input output routine */

/* Declaration of Stack data structure */ #define SIZE 10 /* Size of Stack */ typedef struct{ int items[SIZE]; int top; } STACK; /* Declaration of function prototypes */ void push(); int pop(); void display(); int is_overflow(); int is_empty();

int main(){ STACK stck; char str[100]; int a, flag; stck.top = -1;

printf("This program will check whether the string is in language\n"); printf("L = {w$w': w is a possibly empty string of characters \n"); printf("other than $, w' = reverse(w)}\n"); printf("======================================================== =\n"); printf("Enter a string: "); /* Prompt user to input */ gets(str);

for(a=0;str[a]!='\0'; a++) push(&stck, str[a]);

flag = 1; for(a=0;str[a]!='$';a++){ will act as mirror between */ if(str[a] != pop(&stck)){ char of the string */ flag = 0; break; } } if(flag == 1){ printf("\nThe above string is in the language\n"); } else{ /* Character $ /* left and right

printf("\nThe above string is not in the language\n"); } getchar(); return 0; }//main

//FUNCTIONS void push(STACK *p, int element){ operation */ (p->top)++; p->items[p->top] = element; } /* Function for PUSH

int pop(STACK *p){ return (p->items[(p->top)--]); operation */ } /* Function for POP

/*Function to check stack overflow condition */ int is_overflow(int top){ if(top == SIZE - 1) return(1); else return(0); }

/* Function to check stack empty condition */ int is_empty(int top){ if(top == -1) return(1); else return(0); }

/* Write a C program to implement stack. Stack is a LIFO data strcuture * * LIFO - Last in First Out * * Perform PUSH(insert operation), POP(Delete operation) and Display stack */ #include <stdio.h> #include <conio.h> #define MAXSIZE 5

struct stack {

/* Structure definition for stack */

int stk[MAXSIZE]; int top; };

typedef struct stack STACK; STACK s;

/* Function declaration/Prototype*/

void push (void); int pop(void);

void display (void);

int main ()

{ int choice; int option = 1;

s.top = -1;

printf ("STACK OPERATION\n"); while (option) { printf ("-----------------------------------------\n"); printf (" \n"); printf (" \n"); printf (" \n"); printf (" -------\n"); 4 --> EXIT \n"); 3 --> DISPLAY 2 --> POP 1 --> PUSH

printf ("-----------------------------------

printf ("Enter your choice\n"); scanf ("%d", &choice);

switch (choice) { case 1: push();

break; case 2: pop();

break; case 3: display();

break; case 4: } return;

fflush (stdin); printf ("Do you want to continue(Type 0 or 1)?\n"); scanf } getch(); return 0; } ("%d", &option);

/*Function to add an element to the stack*/ void push () { int num; if (s.top == (MAXSIZE - 1)) { printf ("Stack is Full\n"); return; }

else { printf ("Enter the element to be pushed\n"); scanf ("%d", &num); s.top = s.top + 1; s.stk[s.top] = num; } return; }

/*Function to delete an element from the stack*/ int pop () { int num; if (s.top == - 1) { printf ("Stack is Empty\n"); return (s.top); } else { num = s.stk[s.top]; printf ("poped element is = %d\n", s.stk[s.top]); s.top = s.top - 1;

} return(num); }

/*Function to display the status of the stack*/ void display () { int i; if (s.top == -1) { printf ("Stack is empty\n"); return; } else { printf ("\nThe status of the stack is\n"); for (i = s.top; i >= 0; i--) { printf ("%d\n", s.stk[i]); } } printf ("\n"); }

Output STACK OPERATION -----------------------------------------1 --> PUSH 2 --> POP 3 --> DISPLAY 4 --> EXIT -----------------------------------------Enter your choice 1 Enter the element to be pushed 23 Do you want to continue(Type 0 or 1)? 1 -----------------------------------------1 --> PUSH 2 --> POP 3 --> DISPLAY 4 --> EXIT -----------------------------------------Enter your choice 1 Enter the element to be pushed 45 Do you want to continue(Type 0 or 1)? 1 -----------------------------------------1 --> PUSH 2 --> POP 3 --> DISPLAY 4 --> EXIT -----------------------------------------Enter your choice 1 Enter the element to be pushed 78 Do you want to continue(Type 0 or 1)? 1 -----------------------------------------1 --> PUSH 2 --> POP 3 --> DISPLAY

4 --> EXIT -----------------------------------------Enter your choice 3 The status of the stack is 78 45 23 Do you want to continue(Type 0 or 1)? 1 -----------------------------------------1 --> PUSH 2 --> POP 3 --> DISPLAY 4 --> EXIT -----------------------------------------Enter your choice 2 poped element is = 78 Do you want to continue(Type 0 or 1)? 1 -----------------------------------------1 --> PUSH 2 --> POP 3 --> DISPLAY 4 --> EXIT -----------------------------------------Enter your choice 3 The status of the stack is 45 23 Do you want to continue(Type 0 or 1)? 0

#include <stdio.h> #include <stdlib.h> #include <conio.h> #define SIZE 10

typedef struct { int items[SIZE]; int top;

}STACK;

void push(); int pop(); void display(); int isoverflow(); int isempty();

int main() { STACK s; char str[100]; int i, flag;

s.top = -1;

printf("\nEnter a string: "); gets(str);

for(i=0;str[i]!='\0'; i++) push(&s, str[i]);

flag = 1; for(i=0;str[i]!='\0';i++) { if(str[i] != pop(&s)) { flag = 0; break; } }

if(flag == 1) printf("\nEntered string is palindrome\n"); else printf("\nEntered string is not a palindrome\n");

getch(); return 0;

void push(STACK *p, int element) { if(isoverflow(p->top)) { printf("\nStack is overflow"); } else { (p->top)++; p->items[p->top] = element; } }

int pop(STACK *p) { if(isempty(p->top)) { printf("\nStack is underflow"); } else { return (p->items[(p->top)--]); }

void display(STACK s) { int i; if(isempty(s.top)) { printf("\nStack is empty"); } else { for(i=s.top; i>=0; i--) { printf("\n%d", s.items[i]); } } }

//Function to check stack overflow condition int isoverflow(int top) { if(top == SIZE - 1) return (1); else return (0);

//Function to check stack empty condition int isempty(int top) { if(top == -1) return (1); else return (0); }

// This program determine if a word is a palindrome or not using stack and pointer.

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

#define SIZE 50

//function declarations void push(char i); char pop(void);

//pointers declarations and stack declaration char stack[SIZE]; char *top = stack; char *bottom = stack;

int main(){ //declare a char array of size char string[SIZE];

printf("Enter string: "); scanf("%s", &string);

//printf("Your string is: %s \n", &string );

int i; //push characters onto stack for (i = 0; i < strlen(string); i++) { if(isalnum(string[i]) && !isspace(string[i])) //if a character in the string s is a digit or alphabet character and not a white space { char c = tolower(string[i]); push(c);//push onto stack } }

/* visualize the stack printf("Your stack currently has: "); for(i=0; i < strlen(string); i++){ char temp=stack[i]; printf("%c", temp); } printf("\n");*/

// pop the stack for(i=0; i < strlen(string); i++){ char currItem = pop();

if(currItem != *bottom){ printf("NOT a palindrome.\n"); return 0; } else{ bottom++; } } printf("This is a palindrome.\n"); getch(); return 0; }

// push function void push(char i){ *top = i; top++; }

// pop function char pop(void){ top--; return *top; }

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy