15

    xiaoxiao2023-03-24  7

    问题

           已知递增有序的单链表A、B分别存储了一个集合,请设计算法以求出两个集合A和B的差集A-B(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。

    分析

          初始一个化链表,定义一个常数i初值为0,从A和B的第一个结点开始遍历。A和B结点分别处理大于、小于、等于三种情况即可。

    代码

    int fun(LinkList A, LinkList B, LinkList &C){ int i = 0; C = (LinkList)malloc(sizeof(LNode)); LNode *p = A -> next, *q = B -> next, *r = C; while(p && q) { if(p -> data < q -> data) { LNode *temp = (LinkList)malloc(sizeof(LNode)); temp -> data = p -> data; temp -> next = NULL; r -> next= temp; r = r -> next; p = p -> next; i++; }else if(p -> data == q -> data) { p = p -> next; q = q -> next; }else if(p -> data > q -> data) { q = q -> next; } } if(B == NULL) {///B链表结束,A链表剩余的元素即为只在A中出现的元素ikan while(p) { LNode *temp = (LinkList)malloc(sizeof(LNode)); temp -> data = p -> data; temp -> next = NULL; r -> next= temp; r = r -> next; p = p -> next; i++; } } return i; }

    源代码

           http://123.206.59.223:8080/code/code/15.rar
    转载请注明原文地址: https://ju.6miu.com/read-1201479.html
    最新回复(0)