一个广义表的问题
在<<数据结构--C++描述>>一书中关于广义表的部分,书中给出的
建立广义表的成员函数CreatList()的代码我在VC中调试总出现很多错误,希望高手帮我指出.
int GenList::sever(char *str1,char *hstr1)
{
char ch=str1[0];
int n=strlen(str1);
int i=0,k=0;
while(i<n&&(ch!=','||k!=0))
{
if(ch=='(') k++;
else if(ch==')') k--;
i++;
ch=str1[i];
}
if(i<n)
{
strncpy(hstr1,str1,i-1);
strncpy(str1,str1+i,n-i);
return 1;
}
else if(k!=0) return 0;
else{
strcpy(hstr1,str1); str1=0;
return 1;
}
}
int GenList::CreateList(GenListNode *ls,char *s)
{
char *sub,*hsub;
int tag;
ls=new GenListNode();
ls->utype=HEAD;ls->value.ref=1;
char *s1="()";
if(strlen(s)==0||strcmp(s,s1))ls->tlink=NULL;
else
{
strncpy(sub,s+1,strlen(s)-2);
GenListNode *p=ls;
while(strlen(sub)!=0)
{
p=p->tlink=new GenListNode();
if(sever(sub,hsub))
{
if((hsub[0]!='(')&&(hsub[0]!='''))
{
p->utype=INTGR;
p->value.intgrinfo=atoi(hsub);
}
else
if((hsub[0]!='(')&&(hsub[0]=='''))
{
p->utype=CH;
p->value.charinfo=hsub[1];
}
else
{
p->utype=LST;
CreateList(p->value.hlink,hsub);
}
}
else return 0;
}
p->tlink=NULL;
}
return 1;
}