Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. // определение, является ли полиндромом строка стека в виде списка
  2. int is_polindrome_list(void)
  3. {
  4. st_list a;
  5. a.n = 0;
  6. int flag = 0;
  7. char str[MAX_STR_LEN];
  8. do
  9. {
  10. flag = 0;
  11. printf( "Enter string: ");
  12.  
  13. // Ввод строки
  14. fflush(stdin);
  15. if (fgets(str, MAX_STR_LEN + 1, stdin) != NULL)
  16. {
  17. if(string_check(str) == TRUE)
  18. {
  19. fflush(stdin);
  20. printf("len = %d", (int)strlen(str));
  21.  
  22. // Добавление ее символов в стек
  23. for (int i = 0; i < strlen(str) - 1; i++)
  24. {
  25. printf("new_symb %c \n", str[i]);
  26. push_elem_list(&a, str[i]);
  27. }
  28. }
  29. else
  30. flag = 1;
  31. }
  32. else
  33. flag = 1;
  34. }while (flag);
  35. printf("\na .n = %d\n", a.n);
  36. if (a.n == 0)
  37. {
  38. printf("\nEmpty stack!\n");
  39. return EMPTY_STACK;
  40. }
  41. else if (a.n == 1)
  42. {
  43. //printf("\nString is palindrome\n");
  44. return TRUE;
  45. }
  46. st_list a_2;
  47. a_2.Head = NULL;
  48. a_2.n = 0;
  49.  
  50. st_list a_3;
  51. a_3.n = 0;
  52. a_3.Head = NULL;
  53.  
  54. struct Node *temp_ptr = a.Head;
  55.  
  56. while(temp_ptr != NULL)
  57. {
  58. if (push_elem_list(&a_3, temp_ptr->val) == OK)
  59. temp_ptr = temp_ptr->next;
  60. }
  61. char val;
  62. printf("len mas = %d\n", a_3.n);
  63.  
  64. val = pop_st_list(&a_3, 1);
  65.  
  66. for (int i = 0; i <= a_3.n / 2; i++)
  67. {
  68. val = pop_st_list(&a_3, 1);
  69. printf("val = %c \n", val);
  70. if (val != '\0' && val != '\n')
  71. push_elem_list(&a_2, val) ;
  72. }
  73. char c1;
  74. if (a_3.n == a_2.n + 1)
  75. {
  76. printf("more\n");
  77. c1 = pop_st_list(&a_3, 1);
  78. }
  79. else
  80. {
  81. //val = pop_st_list(&a_3, 1);
  82. printf("val new= %c \n", val);
  83. if (val != '\0' && val != '\n')
  84. push_elem_list(&a_2, val) ;
  85. }
  86. for (int i = 0; i < a_3.n; i++)
  87. {
  88. c1 = pop_st_list(&a_3, 1);
  89. char c2 = pop_st_list(&a_2, 1);
  90. printf("a_3 = %c a_2 = %c\n", c1, c2);
  91. if (c1 != c2)
  92. {
  93. //printf("\nString is not palindrome\n");
  94. del_list(&a_2);
  95. del_list(&a_3);
  96. return FALSE;
  97. }
  98. }
  99. //printf("\nString is palindrome\n");
  100. del_list(&a_2);
  101. del_list(&a_3);
  102. return TRUE;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement