void push_listack(listack *stack, char *data){
listack *newstack;
newstack = (listack *)malloc(sizeof(listack));
newstack->data = malloc(sizeof(newstack->data));
newstack->next = stack->next;
strcpy(newstack->data, data);
stack->next = newstack;
}
int pop_listack(listack * stack){
listack *newstack;
newstack = stack->next;
if(newstack == NULL)
return 0;
stack->next = newstack->next;
free(newstack);
return 1;
}
int Longest_match() {
listack *stack;
int i = 1;
int in;
int len = 0;
int max = 0;
stack = (listack *)malloc(sizeof(listack));
stack->next = NULL;
printf("num of {} is :");
scanf("%d", &in);
while(i<=in){
char *a;
a = malloc(sizeof(a));
printf("num %d is :", i);
scanf("%s", a);
if(strcmp(a, "{") == 0){
push_listack(stack, a);
}
if(strcmp(a, "}") == 0){
if(pop_listack(stack) != 0){
len++;
}
if(max < len){
max = len;
}
}
i++;
free(a);
}
printf("max {} len is %d\n", max * 2);
}