基础的数组链表
用cur标记光标之前的 用last标记最后的十分巧妙
数组开的不够大会引起RE!!
next[0]=0;这使得最后一项所指的为0
核心语句:
next[i]=next[cur]
next[cur]=i
当为正常顺序时
第一句 :把当前指向 最后一项(0) 再把前一项(cur)指向当前!!!
#include<cstring> #include<cstdio> using namespace std; int main() { int next[100001];char s[100001]; while(1==scanf("%s",s+1)) { int len=strlen(s+1); int cur,last; cur=last=0; next[0]=0; for(int i=1;i<=len;i++) { char ch=s[i]; if(ch=='[')cur=0; else if(ch==']')cur=last; else { next[i]=next[cur]; next[cur]=i; if(last==cur)last=i; cur=i; } } for(int i=next[0];i!=0;i=next[i]) printf("%c",s[i]); printf(" "); } return 0; }