有一道数据结构题,请问大家。

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:09:58
假设以结点大小为1(带头结点)的链表结构表示串,则在利用next函数值进行串匹配时,在每个节点中需设三个域:数据域chdata、指针域succ和指针域next。其中chdata域存放一个字符;succ域存放指向同一链表中后继结点的指存放针;next域在串存放指向同一链表中前驱节点的指针;在模式串中,存放指向当该节点的字符与主串中的字符不等时,模式串中下一个应该进行比较的字符节点(即与该字符的next函数值相对应的字符节点)的指针,若该节点字符的next函数值为0,则其next域的值应对应指向头结点。试按上述定义的结构改写求模式串的next函数值的算法。

void LGet_next(LString &T)//链串上的get_next算法
{
p=T->succ;p->next=T;q=T;
while(p->succ)
{
if(q==T||p->data==q->data)
{
p=p->succ;q=q->succ;
p->next=q;
}
else q=q->next;
}//while
}//LGet_next

此乃某答案