Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // определение, является ли полиндромом строка стека в виде списка
- int is_polindrome_list(void)
- {
- st_list a;
- a.n = 0;
- int flag = 0;
- char str[MAX_STR_LEN];
- do
- {
- flag = 0;
- printf( "Enter string: ");
- // Ввод строки
- fflush(stdin);
- if (fgets(str, MAX_STR_LEN + 1, stdin) != NULL)
- {
- if(string_check(str) == TRUE)
- {
- fflush(stdin);
- printf("len = %d", (int)strlen(str));
- // Добавление ее символов в стек
- for (int i = 0; i < strlen(str) - 1; i++)
- {
- printf("new_symb %c \n", str[i]);
- push_elem_list(&a, str[i]);
- }
- }
- else
- flag = 1;
- }
- else
- flag = 1;
- }while (flag);
- printf("\na .n = %d\n", a.n);
- if (a.n == 0)
- {
- printf("\nEmpty stack!\n");
- return EMPTY_STACK;
- }
- else if (a.n == 1)
- {
- //printf("\nString is palindrome\n");
- return TRUE;
- }
- st_list a_2;
- a_2.Head = NULL;
- a_2.n = 0;
- st_list a_3;
- a_3.n = 0;
- a_3.Head = NULL;
- struct Node *temp_ptr = a.Head;
- while(temp_ptr != NULL)
- {
- if (push_elem_list(&a_3, temp_ptr->val) == OK)
- temp_ptr = temp_ptr->next;
- }
- char val;
- printf("len mas = %d\n", a_3.n);
- val = pop_st_list(&a_3, 1);
- for (int i = 0; i <= a_3.n / 2; i++)
- {
- val = pop_st_list(&a_3, 1);
- printf("val = %c \n", val);
- if (val != '\0' && val != '\n')
- push_elem_list(&a_2, val) ;
- }
- char c1;
- if (a_3.n == a_2.n + 1)
- {
- printf("more\n");
- c1 = pop_st_list(&a_3, 1);
- }
- else
- {
- //val = pop_st_list(&a_3, 1);
- printf("val new= %c \n", val);
- if (val != '\0' && val != '\n')
- push_elem_list(&a_2, val) ;
- }
- for (int i = 0; i < a_3.n; i++)
- {
- c1 = pop_st_list(&a_3, 1);
- char c2 = pop_st_list(&a_2, 1);
- printf("a_3 = %c a_2 = %c\n", c1, c2);
- if (c1 != c2)
- {
- //printf("\nString is not palindrome\n");
- del_list(&a_2);
- del_list(&a_3);
- return FALSE;
- }
- }
- //printf("\nString is palindrome\n");
- del_list(&a_2);
- del_list(&a_3);
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement