已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中
来源:互联网 发布:哪个军区实力最强 知乎 编辑:程序博客网 时间:2024/06/05 17:40
已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。
可以利用循环的思想,创造出一个笛卡尔积的效果。当链表1中的每个节点,对应到链表2的每个节点进行寻找,找到数值相同的,则释放当前链表1的节点,并指向下一个节点。
#include<iostream>#include<stdlib.h>#include<assert.h>using namespace std;struct node{ int elem; node* next; node(int x = 0) :elem(x) , next(NULL) {}};node* Create(int *data,size_t size){ assert(data); node* head = new node(data[0]); int i = 1; node* pnode = NULL; node* ptemp = head; for (i; i < size;i++) { pnode = new node(data[i]); ptemp->next = pnode; ptemp = pnode; } return head;}void print(node *l){ assert(l); while (l) { cout << l->elem << " "; l = l->next; } cout << endl;}void difference(node** LA, node* LB){ node* pa = *LA; node* pb = LB; node* pre = NULL; node* temp = NULL; while (pa) { pb = LB;//保证每次从LB的第一个节点找起 while (pb&&pb->elem != pa->elem)//寻找PB中和PA相同的元素 pb = pb->next; if (pb)//找到了 { if (NULL == pre)//PA是头结点 *LA = pa->next; else { pre->next = pa->next;//连接前后节点 } temp = pa; pa = pa->next; free(temp); } else//没找到PA中的当前节点,继续寻找PA的下一个节点 { pre = pa; pa = pa->next; } }}int main(){ int A[] = { 5, 10, 20, 15, 25, 30 }; int B[] = { 5, 15, 35, 25 }; int size1 = sizeof(A) / sizeof(A[0]); int size2 = sizeof(B) / sizeof(B[0]); node* L1 = Create(A,size1); node* L2 = Create(B,size2); print(L1); print(L2); difference(&L1,L2); print(L1); system("pause"); return 0;}
阅读全文
0 0
- 已知集合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的元素分别用不含头结点的单链表存储,函数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的单链表中
- 已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
- 求解集合A和集合B的差集
- 求解集合A与B的差集
- 求解集合A与B的差集
- 集合A与B的差集
- [经典面试题]求解集合A与B的差集
- 求集合{a}+集合{b}的并集
- 创建集合A,集合B。求表达式(A-B)U(B-A)的值。
- HLG 1710 给出三个集合a,b,c,统计集合a元素+集合b中元素=集合c中的元素的个数 (基础题)
- A、B两个整数集合的交集
- 最大流 Dinic 版子
- 使用vue构建一个上传图片表单
- 扩增子分析QIIME2. 9训练特征分类集Training feature classifiers with q2-feature-classifier
- GStreamer基础教程01——Hello World
- intent传递字符串数组
- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中
- 【yoyo】类,对象,方法,属性,事件的定义
- C++之类和对象(二)
- 【计算n阶乘后面有多少个0】
- C# 初步学习LINQ
- 方正窝案,立案调查,现已水落石出,等待批判
- 认真学习php面向对象-2
- 玩转正则表达式(Regular),这个世界正在奖励偷偷用心的人
- JAVA中的值传递与引用传递