Программа, проверяющая баланс скобок. Проверить корректность работы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

вот программа. прошу проверить правильно ли написана... в принципе все последовательности, которые я вводила определяются правильно. но вдруг я что-то не учла.
#include <conio.h>
#include <stdio.h>
#include <malloc.h>
#include <locale.h>
struct Node
{
    char data;
    struct Node *next;
} *head;
 
void push(char cur)
{
    Node *tmp=(Node*)malloc(sizeof(Node));
    tmp->data=cur;
    tmp->next=head;
    head=tmp;
    tmp=NULL;
}
 
void pop(Node **head) 
{
    Node *tmp=*head;
    *head=tmp->next;
    free(tmp);
}
 
int peek(Node *head)
{
    if (head!=NULL)
        return head->data;
    else
        return -1;
}
 
void remove_all(Node **head) 
{
    Node *tmp=NULL;
    while ((*head)!=NULL)
    {
        tmp=(*head)->next;
        free(*head);
        (*head)=tmp;
    }
}
 
int main (void)
{
    int i;
    char s[7];
    setlocale(0, "");
    printf ("Введите скобочную последовательность через пробел\n");
    for (i=0; i<6; i++)
        scanf ("%s", &s[i]);
    for (i=0; i<6; i++)
    {
        if ((s[i]=='(')||(s[i]=='{')||(s[i]=='['))
        {
            push(s[i]);
        }
        else
        {
            if (('('==peek(head) && ')' == s[i]) || ('['==peek(head) && ']'==s[i]) || ('{'==peek(head) && '}'==s[i]))
            {
                pop(&head);
            }
            else
            {
                push(s[i]);
                break;
            }
        }
    }
    if (peek(head)==-1)
        printf ("Последовательность правильная");
    else 
        printf ("Последовательность неправильная");
 
    remove_all(&head);
 
    getch();
    return 0;
}

Решение задачи: «Программа, проверяющая баланс скобок. Проверить корректность работы»

textual
Листинг программы
int CheckStr(char*   S) 
{  
   // < Skip >
 
   return ptrArr == 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы