求单链表的交集和并集
前言
求单链表的交集和并集
提示:以下是本篇文章正文内容,下面案例可供参考
一、前提准备
- 单链表的初始化
- 输入和输出函数
- 明白单链表的交并集的算法原理
二、具体步骤
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}
}
总结
链表的交集就是通过循环两个链表的元素,比较两链表的元素是否相等,不相等则插入到新的链表中。并集就是比较两链表,若相等则创建新节点并赋值。
求单链表的交集和并集相关推荐
- c语言链表交换,求单链表的数据交换解决思路
当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net 网友分享于:2013-11-04 浏览:14次 求单链表的数据 ...
- PTA 基础编程题目集 6-6 求单链表结点的阶乘和
PTA 基础编程题目集 6-6 求单链表结点的阶乘和 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int Factorial ...
- 求单链表结点的阶乘和
求单链表结点的阶乘和 (15分) 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int FactorialSum( List ...
- PTA:6-3求单链表结点的阶乘和(15分)
大一下半期数据结构 数据结构实践任务2 求单链表结点的阶乘和 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义 int Factor ...
- 求单链表的最大值与原地逆转_江西师范大学硕士学位研究生入学考试数据结构试题(2003年)一.doc...
江西师范大学硕士学位研究生入学考试 数据结构 试题 (2003年) 选择题(每空2分,共20分) 1. 设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能是 . (1)A,B,C, ...
- 逆向链表c语言 abcdef,6-6 求单链表元素序号 (5 分)
本文最后更新于742天前,其中的信息可能已经有所发展或是发生改变. 本题要求实现一个函数,求带头结点的单链表中元素序号. 函数接口定义: int Locate ( LinkList L, ElemTy ...
- 求单链表的最大值与原地逆转_数据结构精选考研试题.pdf
[注]:编写程序可选用任一种高语言,算法描述可采用类语言,必要时加上注释 一. 回答下列问题:[20分] 1. 算法的定义和性质 2. 为什么说数组与广义表是线性表的推广? 3. 什么是结构化程序设计 ...
- 求单链表的最大值与原地逆转_数据结构基础复习09.ppt
数据结构基础复习09.ppt 数据结构考研辅导 基础复习 浙江大学计算机学院 内容提纲 考研概述 考察目标理解数据结构的基本概念 掌握数据结构的逻辑结构 存储结构及其差异 以及各种基本操作的实现 在掌 ...
- C/C++语言实现一百个数组之间求任意数组的交集和并集
1:背景要求 1.C++ 2.给定一百个数组,求任意两个集合之间的交集和并集(最好能按照学生的方式做,不被发现的那种)撰写设计书,主要内容包括(500-1000字): ①背景介绍或实验目的: ②功能设 ...
- python求单链表的长度_709. 设计链表(Python)
题目 难度:★★☆☆☆ 类型:链表,设计题 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针 ...
最新文章
- oracle中出现大量active,Oracle技术之大量会话出现resmgr:become active等待
- java id生成器 分布式_分布式高效唯一ID生成器(sequence)
- StarUML启动报RPC服务器不可用错误
- 云溪怎么导入dxf_dwg怎么转换成dxf文件?超详细图文教程分享
- linux文件编程(2)——系统文件描述符、动静态文件、块设备介绍
- linux uboot 源码分析,UBoot源码分析1.pdf
- Bitmap 之 getPixels() 的 stride
- TestNG Eclipse插件
- 拥塞控制,图文并茂(挺丰富,借鉴较多大佬的思想)
- 小白教程系列——C盘满了,将C盘扩容
- 如何提取王者荣耀模型
- 高数:第四章(同济大学第七版)
- 深度学习CNN模型预测电影评论中的情感问题
- ebcdic java_在Java中将EBCDIC转换为ASCII
- get_isPlaying can only be called from the main thread unity3d
- 计算机科学属于sci核心吗,SCI属于核心期刊吗
- RNA-seq全流程分析
- Triangle Fun UVA - 11437(一个数学定理 + 三角形求面积)
- 谷歌翻译结束了中国大陆业务;投资炼金术!用户投资交易辅助系统;矢量搜索应用指南与最佳实践;可调整参数的AI绘图插件;前沿论文 | ShowMeAI资讯日报
- “大玩家”登场,暴风TV的AI版图再下一城
热门文章
- 深扎实战技术 带你走进 MDCC 2016 移动开发者大会
- NO.013-2018.02.18《鹊桥仙·纤云弄巧》宋代:秦观
- 【Hive】if函数用法
- 0-5V转4-20mA信号隔离器、0-10V转换器、直流模块
- 用python制作贺卡怎么显示人名_制作python程序来处理卡片的麻烦.
- 高盛VR/AR报告完整解读版
- Vue项目中如何解决error: failed to push some refs to ‘xxx(远程库)‘ git push失败的解决方案
- 个人第1次作业:阅读与准备作业
- jenkins基础与gitlab代理自动构建
- Java 压缩ZIP包后 压缩包内文件名乱码问题解决