fork download
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define size 100
  4. struct stack
  5. {
  6. char items[size];
  7. int top;
  8.  
  9. }s;
  10. char pop();
  11. void push(char);
  12. void display();
  13. int isfull();
  14. int isempty();
  15. int main()
  16. {
  17. int i=1,c=0;
  18. char ss[100],x;
  19. printf("1.reverse line of text 2.palindrome check\n");
  20. printf("enter any other key to quit\n");
  21.  
  22.  
  23.  
  24. while(i!=0)
  25. {
  26. printf("enter choice ");
  27. scanf("%d",&i);
  28.  
  29. switch(i)
  30. {
  31. case 1:printf("\nenter string to reverse ");
  32. scanf("%[^\n]s",ss);
  33. c=0;
  34. for(i=0;i<strlen(ss);i++)
  35. {
  36. push(ss[i]);
  37.  
  38. }
  39. for(i=s.top;i>=0;i--)
  40. {
  41.  
  42. ss[c++]=s.items[i];
  43. pop();
  44. }
  45. ss[c]='\0';
  46. printf("\nreversed string is %s\n",ss);
  47. break;
  48. case 2: printf("enter string to be checked for palindrome\n");
  49. scanf("%[^\n]s",ss);
  50. if(strlen(ss)%2==0)c=strlen(ss)/2;
  51. else c=strlen(ss)/2+1;
  52. for(i=0;i<strlen(ss)/2;i++)
  53. {
  54. push(ss[i]);
  55.  
  56. }
  57.  
  58. for(i=c;i<strlen(ss);i++)
  59. {
  60. if(ss[i]==s.items[s.top])
  61. {
  62.  
  63. x=pop();
  64.  
  65. }
  66. else break;
  67. }
  68.  
  69. if(i==strlen(ss))printf("palindrome\n");
  70. else printf("not palindrome\n");
  71. break;
  72. default:i=0;
  73.  
  74. }
  75. }
  76.  
  77. }
  78. int isfull()
  79. {
  80.  
  81. return s.top==size-1;
  82. }
  83. int isempty()
  84. {
  85.  
  86. return s.top==-1;
  87. }
  88. char pop()
  89. {
  90. char x;
  91. if(isempty())printf("cant pop as stack empty\n");
  92. else
  93. {
  94. x=s.items[s.top];
  95. s.top--;
  96. return x;
  97. }
  98.  
  99. }
  100. void push(char x)
  101. {
  102. if(isfull())printf("cant push as stack full\n");
  103. else
  104. {
  105. s.items[++s.top]=x;
  106.  
  107.  
  108. }
  109.  
  110. }
  111. void display()
  112. {
  113. int i;
  114. if(isempty())printf("cant display as stack empty\n");
  115. else
  116. {
  117.  
  118. for(i=s.top;i>=0;i--)
  119. {
  120.  
  121. printf("%c ",s.items[i]);
  122. }
  123. }
  124.  
  125. }
  126.  
Success #stdin #stdout 0s 9424KB
stdin
1 abc def
2 abcdcba
stdout
1.reverse line of text 2.palindrome check
enter any other key to quit
enter choice 
enter string to reverse 
reversed string is fed cba 
enter choice enter string to be checked for palindrome
not palindrome
enter choice