您的位置:首页 > 其它

uva11988数组模拟单向链表

2016-02-12 20:20 323 查看
1)

#include <iostream>
#include <string.h>

using namespace std;
const int maxn=100000+5;
int next[maxn];
int cur,last;
//next[0]=0;
//int cur=0;
//int last=0;
char s[maxn];
int main()
{
while(scanf("%s",s+1)==1){
int len=strlen(s+1);//从起始地址开始计算个数
last=cur=0;
next[0]=0;
for(int i=1;i<=len;i++){
if(s[i]=='[')
cur=0;
else if(s[i]==']')
cur=last;
else{
next[i]=next[cur];//从当前字符指向上一个字符所指向的位置(刚开始即指向0,相当于指向一个尾节点)
next[cur]=i;//从光标cur的位置指向当前字符

if(cur==last)//记录当前最后一个字符
last=i;

cur=i;//将cur移动到当前字符
}
}
for(int i=next[0];i!=0;i=next[i]){
cout<<s[i];
}
cout<<endl;
memset(next,0,sizeof(next));
//cur=last=0;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: