一般集合的合并(并集)
实现算法
void MergeList(LinkList &LA,LinkList LB){m=ListLength(LA);n=ListLength(LB);for(i=1;i<=n;i++){GetElem(LB,i,e);if(!LocateElem(LA,e)){ListInsert(LA,++m,e);}}
}
具体实现代码
#include<stdio.h>
#include<stdlib.h>
//定义单链表
typedef struct LNode{int data;struct LNode *next;
}LNode,*LinkList;
//单链表初始化(带头节点)
void InitList(LinkList &L){L=(LinkList)malloc(sizeof(LNode));L->next=NULL;
}
//求单链表表长
int ListLength(LinkList L){LNode *p=L;int n=0;if(p->next==NULL){//如果单链表为空 return n;}while(p->next!=NULL){n=n+1;p=p->next; }return n;
}
//取单链表第i个元素给e
bool GetElem(LinkList L,int i,int &e){LNode *p=L->next;int j=1;while(p&&j<i){p=p->next;++j;}if(!p||j>i){return false;}e=p->data;return true;
}
//单链表的按值查找
LNode *LocateElem(LinkList L,int e){LNode *p=L->next;while(p&&p->data!=e){p=p->next;}return p;
}
//在单链表后插入一个元素
void ListInsert(LinkList &L,int i,int e){LNode *s,*p=L;int j=0;while(p&&(j<i-1)){p=p->next;++j;}if(!p || j>i-1){return;}s=(LNode*)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;
}
//尾插法创建单链表
int CreateList_R(LinkList &L){InitList(L);LNode *s,*r=L;int x;printf("依次输入单链表中的元素,中间用空格隔开,9999为停止创建:");scanf("%d",&x);while(x!=9999){s=(LNode*)malloc(sizeof(LNode));s->data=x;r->next=s;r=s;scanf("%d",&x);}r->next=NULL;return 0;
}
//算法
void MergeList(LinkList &LA,LinkList LB){int m,n,e;m=ListLength(LA);n=ListLength(LB);for(int i=1;i<=n;i++){GetElem(LB,i,e);if(!LocateElem(LA,e)){ListInsert(LA,++m,e);}}
}
//输出单链表中的元素
void printList(LinkList L){LNode *p=L;p=p->next;while(p){printf("%d ",p->data);p=p->next;}printf("\n");
}
int main(){LNode *LA,*LB;printf("创建单链表LA:\n"); CreateList_R(LA);printf("输出单链表LA:");printList(LA);printf("创建单链表LB:\n");CreateList_R(LB);printf("输出单链表LB:");printList(LB);MergeList(LA,LB);//将单链表LB中的数字合并到LA中 printf("输出合并后的单链表:");printList(LA);return 0;
}
一般集合的合并(并集)相关推荐
- 集合运算—union(并集)、intersect(交集)和except(差集)
一.集合运算的基本格式是: 集合查询1 <集合运算> 集合查询2 [order by ...] 二.集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐 ...
- python set集合 交集,并集,差集,对称差集
set集合测试打印如下: setA={1,2,3,4} setB={3,4,5,6} print(setA-setB) >>> {1, 2} - 取差集 print(setB-set ...
- java集合交运算_java中计算集合的交差并集示例代码
前言 本文主要给大家简单介绍下,如何使用apache commons以及guava的类库来计算集合的交差并集.分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. maven com.go ...
- 多IP地址集合的合并
客户要求:希望有个工具方法,可以将一个集合中的IP地址进行合并,例如:"1.1.1.1","1.1.1.2","1.1.1.3"可以合并成& ...
- python集合的交集并集差集对称差集操作
补一下数学基础 集合间的数学操作交集: 调用函数intersection()或者 & ,原集合不发生变化并集: 调用函数union() 或者 | ,原集合不发生变化差集: 调用函数differ ...
- oracle 并集 时间_Oracle集合运算符 交集 并集 差集
集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...
- JAVA Hashset求集合的交集并集差集
JAVA Hashset求集合的交集并集差集 Hashset是Set接口较为常见的一个子类,该子类的最大特点是不允许保存重复的元素,并且所有的内容都采用散列(无序)的方式进行存储. package c ...
- 第一个python程序:定义,列表,元组,集合,求并集交集,键和值,运算符,缩进
''' 来源:天善智能韦玮老师课堂笔记 ''' print("定义") a = 6 # python里无需定义 print("a=",a) a += 1 # + ...
- java8 stream流操作集合交集,差集,并集,过滤,分组,去重,排序,聚合等
测试对象 public class Person {private String name;private Integer age;private Integer weight;public Pers ...
最新文章
- 困扰多日的C#调用Haskell问题竟然是Windows的一个坑
- windows 7作为微软对抗Google的秘密武器
- 【poj3734】矩阵乘法求解
- 基于长度特征的三文鱼好sea bass的区分,sesbass 比三文鱼长
- rnn按时间展开_双向RNN的理解
- MySQL UNION 与 UNION ALL 语法与用法
- 【操作系统】多道程序的理解
- Stack Usage on Transfers to Interrupt and Exception Handling Routines
- WebAPI PUT,DELETE请求404
- 2021四川高考成绩位次查询,2021年四川高考位次查询及一分一段表排名查询
- android emulator虚拟设备之qemu pipe分析(三)
- android中jni数据加密,Android jni字符串如何加密
- java echarts 饼图_饼图 | ECharts 数据可视化实验室
- React脚手架搭建及创建React项目
- Win7远程桌面 提示 登录没有成功解决方法
- 真惭愧--连这样的小事都没有坚持下来
- SpCL阅读笔记:Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID
- 第一行代码-第二版(郭霖著)笔记三(UI控件)
- IntelliJ IDEA 简体中文字体
- 卷积神经网络(CNN)详细介绍及其原理详解
热门文章
- docker学习笔记2
- eter测试软件,AcCellerator高通量单细胞力学荧光测试分析系统
- 常见3大类放电管的区别与特性
- python idle使用教程_pythonidle中文教程
- 毕业两年的大专生程序员工作总结(java后端)
- 为什么现在的手机越来越重,越来越厚了?
- 免费iOS第三方推送工具Urban Airship使用教程
- 远程桌面连接软件轻松实现远程移动办公
- 【TensorFlow实战笔记】卷积神经网络CNN实战-cifar10数据集(tensorboard可视化)
- python人生的不同阶段_完整的人生有四个阶段,绝大多数人只活过一个阶段