UVA - 11988

来源:互联网 发布:创维酷开软件下载 编辑:程序博客网 时间:2024/05/01 02:54
//后向插入链表#include<iostream>#include<cstdio>#include<sstream>#include<cctype>#include<cstring>#include<cmath>#include<algorithm>#include<vector>#include<set>#include<map>#include<queue>#include<deque>#include<stack>using namespace std;const int maxn=1e5+5;//cur保存当前需要被插入的位置,last保存为最后一个字符的位置int cur,last;char p[maxn];int nxt[maxn];int main(){    string s;    while(scanf("%s",p+1)!=EOF){        cur=last=0;        nxt[0]=0;//表头位置为nxt[0]         int len=strlen(p+1);        for(int i=1;i<=len;i++){            if(p[i]=='[')                cur=0;//如果为[改变链表头            else if(p[i]==']')                cur=last;//如果为],从最后一个字符插入            else{                nxt[i]=nxt[cur];                nxt[cur]=i;                if(cur==last)last=i;//last指向当前窗口的最后一个字符                cur=i;//cur指向当前需要被插入的位置             }         }        for(int i=nxt[0];i!=0;i=nxt[i])            printf("%c",p[i]);        printf("\n");    }    return 0;} 
0 0
原创粉丝点击