6-4 破碎的键盘 uva11988

基础的数组链表

用cur标记光标之前的  用last标记最后的十分巧妙

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("\n");




    }










    return 0;
}
View Code

猜你喜欢

转载自www.cnblogs.com/bxd123/p/10286051.html
6-4