Программа, проверяющая баланс скобок. Проверить корректность работы - 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;
}