题意:训练指南P244
分析:链表模拟,维护链表的head和tail指针
#include <bits/stdc++.h>
using namespace std; const int N = 1e5 + 5;
struct Link_list {
char ch;
Link_list *nex;
}link_list[N]; int main(void) {
while (true) {
Link_list *head = link_list;
Link_list *q = link_list + 1;
head -> nex = NULL;
Link_list *tail = head, *pos = head;
char c;
while (true) {
c = getchar ();
if (c == '\n') break;
if (c == EOF) return 0;
if (c != '[' && c != ']') {
Link_list *p = q++;
p -> ch = c;
p -> nex = pos -> nex;
pos -> nex = p;
pos = p;
if (tail -> nex != NULL) tail = pos;
}
else if (c == '[') pos = head;
else pos = tail;
}
Link_list *p = head -> nex;
while (p) {
printf ("%c", p -> ch);
p = p -> nex;
}
puts ("");
} return 0;
}