#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _data
{ char c;
struct _data *back, *next;
} Data;
void Add(Data *d, char ch)
{ Data *tmp = (Data*)malloc(sizeof(Data));
tmp->c = ch;
tmp->back = d;
tmp->next = d->next;
d->next->back = tmp;
d->next = tmp;
}
void PrintOut(Data *first, Data *last)
{ Data *iter = first->next;
while(iter != last)
{ printf("%c", iter->c);
iter = iter->next;
free(iter->back);
}
free(iter);
printf("\n");
}
int main()
{ Data *first, *iter, *last;
char inp[500000];
int i, len;
while(scanf("%s", inp) != EOF)
{ first = (Data*)malloc(sizeof(Data));
last = (Data*)malloc(sizeof(Data));
first->back = NULL;
first->next = last;
last->back = first;
last->next = NULL;
iter = first;
len = strlen(inp);
for(i = 0; i < len; i++)
{ switch(inp[i])
{ case '[':
iter = first;
break;
case ']':
iter = last->back;
break;
default:
Add(iter, inp[i]);
iter = iter->next;
}
}
PrintOut(first, last);
}
return 0;
}
No comments:
Post a Comment