题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3139
思路:数组实现的链表
Code:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int AX = 1e5+666;
int next1[AX]; //next是关键字,交上去会CE。
char s[AX];
int main(){
while( scanf("%s",s+1) != EOF ){
int cur = 0 ;
int last = 0;
next1[0] = 0;
int n = strlen(s+1);
for( int i = 1 ; i <= n ; i++ ){
if( s[i] == '[' ) cur = 0;
else if( s[i] == ']' ) cur = last;
else{
next1[i] = next1[cur];
next1[cur] = i;
if( cur == last ) last = i;
cur = i;
}
}
for( int i = next1[0] ; i != 0 ; i = next1[i] ){
cout << s[i] ;
}
cout << endl;
}
return 0;
}