链表的交集

时间:2017-03-02 17:40:58

标签: c algorithm data-structures

Output showing the wrong intersection of List 1 and List 2我正在为两个链接列表的交集编写一个函数但不知何故我一直得到错误的输出。想法是初始化一个空列表并通过使用Find函数遍历列表1来检查是否它与列表2相交。如果是,则将其添加到遍历列表1后返回的列表4(答案)。

这是函数,以及它调用的支持函数:

List Intersection(List L1, List L2) {
    List L4 = MakeEmpty(NULL);
    Position A = First(L1);
    Position B = First(L2); 
    Position C = Header(L4);
    while(A != NULL){
        if(Find(A->Element, L2) != NULL) {  
            Insert(A->Element, L4, C);
            A = A->Next;
            C = C->Next;
        } else {
            A = A->Next;
        }
    }
    return L4;
}

Position Find( ElementType X, List L ) {
    Position P = L->Next;
    while( P != NULL && P->Element != X )
        P = P->Next;
    return P;
}

void Insert( ElementType X, List L, Position P ) {
    Position TmpCell = malloc( sizeof( struct Node ) );
    // [check for null]
    TmpCell->Element = X;
    TmpCell->Next = P->Next;
    P->Next = TmpCell;
}

0 个答案:

没有答案