求解集合A与B的差集
来源:互联网 发布:mac 切换大小写设置 编辑:程序博客网 时间:2024/06/06 02:49
已知集合A和B的元素分别用不含头结点的单链表存储,函数difference( )用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。
#include<stdio.h>
struct
node{
int
elem;
struct
node* next;
};
/*
本题的解法思路较简单:
因为要求集合A和集合B的差集(A-B),结果保存在集合A中.
所以我们取出集合A中每一个元素,然后在集合B中寻找(代码22行所实现) 找到即删除此节点 否则保留
此时while循环跳出只有两种情况,pb为NULL或者 pa->elem==pb->elem
当pb不为null时,即找出集合A和集合B的公有元素,此时要删除这个元素
pre(实现删除节点之后的链接)
当pre为NULL时,说明是首次找到A和B的公有元素,此时 *LA指向pa->next 所以*LA仍然是头结点
当pre不为NULL时, pre指向pa->next,顺利实现删除节点的链接
*/
void
difference(node** LA,node* LB){
node*pa,*pb,*pre,*q;
pre=NULL;
pa=*LA;
/*LA是指向指针的指针,pa指向集合的元素*/
while
(pa){
pb=LB;
/*pb指向集合B的元素*/
while
(pb && pa->elem!=pb->elem)
/*在链表LB中寻找与pa所指元素相等的节点*/
pb=pb->next;
if
(pb){
/*pa所指元素与pb所指元素相等*/
if
(!pre){
*LA=pa->next;
}
else
{
pre->next=pa->next;
}
q=pa;
/*求差集 所以要删除pa节点*/
pa=pa->next;
free
(q);
}
else
{
pre=pa;
pa=pa->next;
}
}
}
0 0
- 求解集合A与B的差集
- 求解集合A与B的差集
- 求解集合A和集合B的差集
- [经典面试题]求解集合A与B的差集
- 集合A与B的差集
- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中
- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。
- 链表--已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。
- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中
- 已知集合A和B的元素分别用不含头结点的单链表存储, 求解集合A与B的差集,并将结果保存在集合A的单链表中
- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。
- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={
- 求差集:已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集
- 求链表A与链表B的差集
- A-B差集的计算
- 求解两个集合的差集,集合是以单向链表存储
- 集合的差集
- 两个整数集合A,B,求二者交集、并集、差集
- C程序中丢弃输入行无用的代码
- iOS软件开发 Core Data的使用
- 我的SBJson来生成和解析JSON串的代码
- Gym 100685G Gadget Hackwrench (LCA)
- hdu5497 Inversion
- 求解集合A与B的差集
- Merge Two Sorted Lists and Merge k Sorted Lists
- 剑指offer—数组中的逆序对
- Android创建和删除文件夹和文件
- HDU 2064 汉诺塔III
- struts2笔记2
- CAN总线基础知识(一)
- CAN总线基础知识(二)
- 路由协议