fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct stack stack;
  4. struct stack {
  5. char brace ;
  6. stack * next ;
  7. } *top = NULL ;
  8.  
  9. void push ( char val )
  10. {
  11. stack * ptr = (stack *) malloc(sizeof(stack)) ;
  12. ptr -> brace = val ;
  13. ptr -> next = top ;
  14. top = ptr ;
  15. }
  16.  
  17. char pop ()
  18. {
  19. stack * ptr ;
  20. char ch ;
  21. ptr = top ;
  22. ch = top -> brace ;
  23. top = top -> next ;
  24. free (ptr) ;
  25. return ch ;
  26. }
  27.  
  28. char close(char ch)
  29. {
  30. if(ch==']')
  31. return '[' ;
  32. if(ch=='}')
  33. return '{' ;
  34. if(ch==')')
  35. return '(' ;
  36. return ' ' ;
  37. }
  38. int check_order (char * str)
  39. {
  40. int i , len = 0 ;
  41. for(i=0;str[i]!='\0';i++)
  42. len++ ;
  43. if(len&1) // if string length is odd
  44. return 0 ;
  45. for(i=0;i<len;i++)
  46. {
  47. if(str[i]=='[' || str[i]=='{' || str[i]=='(')
  48. push(str[i]);
  49. else {
  50. if(pop() != close(str[i]))
  51. return 0 ;
  52. }
  53. }
  54. return 1 ;
  55. }
  56. int main()
  57. {
  58. char str[100] ;
  59. printf("Enter the string expression: ");
  60. scanf("%s",str);
  61. printf("The expression you entered is: %s .\n",str);
  62. if( check_order(str) )
  63. printf("Right Order");
  64. else printf("Wrong Order");
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0s 2160KB
stdin
[[]
stdout
Enter the string expression: The expression you entered is: [[] .
Wrong Order