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 10312KB
stdin
1
hi there
stdout
1.reverse line of text 2.palindrome check
enter any other key to quit
enter choice 
enter string to reverse 
reversed string is +a�iH
enter choice