Программа, проверяющая баланс скобок. Проверить корректность работы - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д