Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef int datatype;
- typedef struct
- {
- datatype *item;
- int size;
- int sp;
- } stack;
- void init_stack(stack *st)
- {
- st -> size =16;
- st -> sp = 0;
- st -> item = malloc(16 * sizeof(datatype));
- }
- void delete_stack(stack *st)
- {
- free(st -> item);
- }
- void push(stack *st, datatype value)
- {
- if (st -> sp == st -> size - 1)
- {
- st -> size = st -> size * 2;
- st -> item = realloc(st -> item, st -> size * sizeof(datatype));
- }
- st -> item[st -> sp++]=value;
- }
- datatype pop(stack *st)
- {
- if(st -> sp < 1)
- {
- printf("not Ok");
- exit(1);
- }
- --(st -> sp);
- return st -> item[st -> sp];
- }
- int empty_stack(stack *st)
- {
- return (st -> sp == 0);
- }
- int check_round_bracket()
- {
- stack st; // для круглых скобок
- stack stk; // для квадратных скобок
- stack stf; // для фигурных скобок
- char c;
- init_stack(&st);
- init_stack(&stk);
- init_stack(&stf);
- while((c = getchar()) != '.')
- {
- if(c == '(')
- push(&st,1);
- else if(c == ')')
- pop(&st);
- }
- if(empty_stack(&st))
- printf("Ok");
- else
- printf("not Ok");
- delete_stack(&st);
- }
- int main(void)
- {
- stack st;
- init_stack(&st);
- push(&st,1);
- push(&st,2);
- push(&st,3);
- push(&st,4);
- printf("%d",pop(&st));
- printf("%d",pop(&st));
- printf("%d",pop(&st));
- printf("%d",pop(&st));
- check_round_bracket();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement