数据结构入门问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 11:05:19
在字符串匹配的那一节里,讲到的第一个是简单算法
简单算法
int Index(SString s,SString t,int pos)
{
int i = pos,j = 1;
while ( i<=s[0] && j<=t[0])
{ if (s[i] == t[j]) { i++;j++;}
else { i = i-j+2; j=1; }
}
if (j>t[0]) return ( i – t[0]);
else return 0;
}

我疑惑的是为什么s[0] t[0]可以代表s 和 t的字符串长度?

另外,在广义表中
求表尾的算法中,t->val.sublist = h->val.sublist->link为什么?(link不是指向了下一个吗?怎么是表尾了呢?)
还有,表头和表尾到底指什么?表头是不是只能为原子?表尾呢?
这里给个例子(a,(a,b),((a,c),(c,d)),a) 根据这个具体讲讲。
谢谢牛人们。

1.看SString的定义,比如PASCAL里字符串(数组)的第一个就是长度。
2.表头可以是原子或者表,但表尾一定是(子)表。
假如,L=(a,b);要取到原子b,则:
tail(L)=(b);
head(tail(L))=b;

L=(a,(a,b),((a,c),(c,d)),a) ;
head(L)=a;
tail(L)=((a,b),((a,c),(c,d)),a));