C 看看L1是不是L2的子链

//结构体
typedef struct Node {
    ElementType data;
    struct Node * next;
} LNode, * LinkNode;

//看看L1是不是L2的一个子串
Status isChildStr(LinkNode L1, LinkNode L2){
    //L2出个前驱和当前,L1出个当前
    LinkNode nodel1 = L1->next;
    
    LinkNode prenodel2 = L2;
    LinkNode nodel2 = prenodel2->next;
    //L2和L1的当前一起判断,有一个少都不行
    while (nodel1 && nodel2) {
    	//相等的话就并驾齐驱往前走
        if(nodel1->data == nodel2->data){
            nodel1 = nodel1->next;
            nodel2 = nodel2->next;
        }
        //不相同的话,L1变成原来的样子,L2往后走一个
        else
        {
        	//L2
            prenodel2 = prenodel2->next;
            nodel2 = prenodel2->next;
            //L1
            nodel1 = L1->next;
        }
    }
    //看看L1是不是走到了最后
    if(nodel1){
        return ERR;
    }
    //完美地避免了条件的制约,那就是?的
    return OK;
}
posted @ 2018-10-25 18:56  赫凯  阅读(49)  评论(0)    收藏  举报