前言

求单链表的交集和并集


提示:以下是本篇文章正文内容,下面案例可供参考

一、前提准备

  1. 单链表的初始化
  2. 输入和输出函数
  3. 明白单链表的交并集的算法原理

二、具体步骤

1.头文件

代码如下(示例):

#include<iostream>
#include<fstream>
#include<string>
#include<cstdio>
using namespace std;
#define ERROR 0

2.定义数据类型

代码如下(示例):

typedef struct LNode {
int data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *List; //LinkList为指向结构体LNode的指针类型

 3.函数声明

void InitList(List &L); //创建链表(带头结点)
void ListInput(List &L, int n); //链表数据的输入
void ListOutput(List L); //输出List
void IntersecList(List LA, List LB,List &LC); //线性表的交集(链表)
void UnionList(List &LA, List LB); //线性表的合并

4.初始化单链表

void InitList(List &L) //创建链表
{
L = new LNode;
L->next = NULL;
}

5.输入输出函数

void ListInput(List &L, int n) //链表数据的输入
{
int i=1;
List p, r;
r = L;
while (i<=n) {
p = new LNode;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
i++;
}}void ListOutput(List L) //输出List
{
List p;
p = L->next;
cout << "The List is:"<<endl;
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}

6.交集

void IntersecList(List LA, List LB,List &LC)
{List p,s,r,t;p = LA->next; //循环LA链表while(p!=NULL){s = LB->next; //循环LB链表while(s!=NULL){r = LC->next; //创建一个指针r指向LCif(p->data==s->data){t = new LNode; //创建新的节点t->next = NULL;t->data = p->data; //赋值LC->next = t; //连接t->next = r; //移动r指针break;}s = s->next; //s前移,循环LB链表}p = p->next; //p前移,循环LA链表}

7.并集

void UnionList(List &LA, List LB) //求两链表的并集,并入LA中
{List h,s,p,t; //声明结构体变量指针h,s,p,t s = LB->next; //s指向LB的下一个节点bool flag = false; //标记while(s!=NULL){p = LA->next; //p指向LA的下一个节点flag = false; //标记flag为falsewhile(p!=NULL){ //判断两个链表的元素是否相等if(s->data==p->data){flag = true; //相等记为true}p = p->next; //移动指针p}h = LA->next; //h指向LA的下一个节点//元素不相等链表LA创建新节点if(flag==false){t = new LNode; //创建新的节点t->next = NULL;t->data = s->data; //将不相等的元素赋值给新节点t->next = h; //连接LA链表LA->next = t; }s = s->next; //移动指针s}
}

总结

链表的交集就是通过循环两个链表的元素,比较两链表的元素是否相等,不相等则插入到新的链表中。并集就是比较两链表,若相等则创建新节点并赋值。

求单链表的交集和并集相关推荐

  1. c语言链表交换,求单链表的数据交换解决思路

    当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net  网友分享于:2013-11-04  浏览:14次 求单链表的数据 ...

  2. PTA 基础编程题目集 6-6 求单链表结点的阶乘和

    PTA 基础编程题目集 6-6 求单链表结点的阶乘和 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int Factorial ...

  3. 求单链表结点的阶乘和

    求单链表结点的阶乘和 (15分) 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int FactorialSum( List ...

  4. PTA:6-3求单链表结点的阶乘和(15分)

    大一下半期数据结构 数据结构实践任务2 求单链表结点的阶乘和 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义 int Factor ...

  5. 求单链表的最大值与原地逆转_江西师范大学硕士学位研究生入学考试数据结构试题(2003年)一.doc...

    江西师范大学硕士学位研究生入学考试 数据结构 试题 (2003年) 选择题(每空2分,共20分) 1. 设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能是 . (1)A,B,C, ...

  6. 逆向链表c语言 abcdef,6-6 求单链表元素序号 (5 分)

    本文最后更新于742天前,其中的信息可能已经有所发展或是发生改变. 本题要求实现一个函数,求带头结点的单链表中元素序号. 函数接口定义: int Locate ( LinkList L, ElemTy ...

  7. 求单链表的最大值与原地逆转_数据结构精选考研试题.pdf

    [注]:编写程序可选用任一种高语言,算法描述可采用类语言,必要时加上注释 一. 回答下列问题:[20分] 1. 算法的定义和性质 2. 为什么说数组与广义表是线性表的推广? 3. 什么是结构化程序设计 ...

  8. 求单链表的最大值与原地逆转_数据结构基础复习09.ppt

    数据结构基础复习09.ppt 数据结构考研辅导 基础复习 浙江大学计算机学院 内容提纲 考研概述 考察目标理解数据结构的基本概念 掌握数据结构的逻辑结构 存储结构及其差异 以及各种基本操作的实现 在掌 ...

  9. C/C++语言实现一百个数组之间求任意数组的交集和并集

    1:背景要求 1.C++ 2.给定一百个数组,求任意两个集合之间的交集和并集(最好能按照学生的方式做,不被发现的那种)撰写设计书,主要内容包括(500-1000字): ①背景介绍或实验目的: ②功能设 ...

  10. python求单链表的长度_709. 设计链表(Python)

    题目 难度:★★☆☆☆ 类型:链表,设计题 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针 ...

最新文章

  1. oracle中出现大量active,Oracle技术之大量会话出现resmgr:become active等待
  2. java id生成器 分布式_分布式高效唯一ID生成器(sequence)
  3. StarUML启动报RPC服务器不可用错误
  4. 云溪怎么导入dxf_dwg怎么转换成dxf文件?超详细图文教程分享
  5. linux文件编程(2)——系统文件描述符、动静态文件、块设备介绍
  6. linux uboot 源码分析,UBoot源码分析1.pdf
  7. Bitmap 之 getPixels() 的 stride
  8. TestNG Eclipse插件
  9. 拥塞控制,图文并茂(挺丰富,借鉴较多大佬的思想)
  10. 小白教程系列——C盘满了,将C盘扩容
  11. 如何提取王者荣耀模型
  12. 高数:第四章(同济大学第七版)
  13. 深度学习CNN模型预测电影评论中的情感问题
  14. ebcdic java_在Java中将EBCDIC转换为ASCII
  15. get_isPlaying can only be called from the main thread unity3d
  16. 计算机科学属于sci核心吗,SCI属于核心期刊吗
  17. RNA-seq全流程分析
  18. Triangle Fun UVA - 11437(一个数学定理 + 三角形求面积)
  19. 谷歌翻译结束了中国大陆业务;投资炼金术!用户投资交易辅助系统;矢量搜索应用指南与最佳实践;可调整参数的AI绘图插件;前沿论文 | ShowMeAI资讯日报
  20. “大玩家”登场,暴风TV的AI版图再下一城

热门文章

  1. 深扎实战技术 带你走进 MDCC 2016 移动开发者大会
  2. NO.013-2018.02.18《鹊桥仙·纤云弄巧》宋代:秦观
  3. 【Hive】if函数用法
  4. 0-5V转4-20mA信号隔离器、0-10V转换器、直流模块
  5. 用python制作贺卡怎么显示人名_制作python程序来处理卡片的麻烦.
  6. 高盛VR/AR报告完整解读版
  7. Vue项目中如何解决error: failed to push some refs to ‘xxx(远程库)‘ git push失败的解决方案
  8. 个人第1次作业:阅读与准备作业
  9. jenkins基础与gitlab代理自动构建
  10. Java 压缩ZIP包后 压缩包内文件名乱码问题解决