Sunday 6 July 2014

Stack Using C Programming

/*
Stacks can be used to reverse a sequence.
For example,
->if a string ”Computers” is entered by the user the stack can be used to create and display the reverse string “sretupmoC” as follows.
The program simply pushes all of the characters of the string into the stack.
Then it pops and display until the stack is empty.
*/

#include<stdio.h>
#include<conio.h>
#define STACKSIZE 50
typedef struct{
int count;
int top;
char items[STACKSIZE];/*stack can contain up to 50 characters*/
}STACK;

void push(STACK *, char);
char pop(STACK *);

void main()
{
int i;
STACK s;
char p, A[20];
s.top = -1; /*indicates that the stack is empty at the beginning*/
s.count=0;
printf("Input the string please:\n");
gets(A); /* alternatively you can use scanf("%s",A); */
/*pushing the characters into the stack*/
for(i=0;A[i] != '\0';i++){
p = A[i];
push(&s,p);
}
printf("The string in reverse order is:");
/*popping and printing the string in reverse order*/
while(s.count >= 0){
p=pop(&s);
printf("%c",p);
}
return 0;
}

void push(STACK *Sptr, char ps) /*pushes ps into stack*/
{
if(Sptr->top == STACKSIZE-1){
printf("Stack is full\n");
Return; /*exit from the function*/
}
else {
Sptr->top++;
Sptr->count++;
Sptr->items[Sptr->top]= ps;
}
}

char pop(STACK *Sptr)
{
char pp;
if(Sptr->top == -1){
printf("\nStack is empty\n");
exit(1); /*exit from the function*/
}
else {
pp = Sptr->items[Sptr->top];
Sptr->top--;
Sptr->count--;
}
return pp;
}

No comments:

Post a Comment