当前位置: 首页 > news >正文

数据结构与算法编程题11

已知两个链表A和B分别表示两个集合,其元素递增排列。
请设计算法求出A与B的交集,并存放于A链表中。
a: 1, 2, 2, 4, 5, 7, 8, 9, 10
b: 1, 2, 3, 6, 7, 8

#include <iostream>
using namespace std;typedef int Elemtype;
#define ERROR 0;
#define OK    1;typedef struct LNode
{Elemtype data;      //结点保存的数据struct LNode* next; //结构体指针
}LNode, * LinkList;/*单链表初始化*/
bool Init_LinkList(LinkList& L)
{L = (LinkList)malloc(sizeof(LNode));  //新建头结点if (L == NULL){return ERROR;}L->data = 0;L->next = NULL;return OK;
}/*单链表头插法*/
bool LinkList_head_instert(LinkList& L)
{int x = 0;LNode* p = NULL;while (cin >> x){p = (LinkList)malloc(sizeof(LNode));if (p != NULL)  //防止分配地址失败{p->data = x;p->next = L->next;L->next = p;if (cin.get() == '\n') break;  //检测换行符}else{exit(0);cout << "内存分配失败" << endl;}}return OK;
}/*单链表尾插法*/
bool LinkList_tail_instert(LinkList& L)
{int x = 0;LNode* p = NULL;LNode* r = NULL;r = L;while (cin >> x){p = (LinkList)malloc(sizeof(LNode));if (p != NULL)  //防止分配地址失败{p->data = x;p->next = NULL;r->next = p;r = p;if (cin.get() == '\n') break;  //检测换行符}else{exit(0);cout << "内存分配失败" << endl;}}return OK;
}/*单链表遍历*/
bool LinkList_All_value(LinkList L)
{if (L->next == NULL){cout << "链表为空" << endl;return ERROR;}LNode* s = NULL;s = L->next;while (s != NULL){cout << s->data << "   ";s = s->next;}cout << endl;free(s);return OK;
}/*单链表长度*/
int LinkList_length(LinkList L)
{int count = 0;LNode* s = NULL;s = L->next;while (s != NULL){count++;s = s->next;}return count;
}/*清空单链表*/
void Clear_LinkList(LinkList& L)
{LNode* p = L->next;LNode* q = NULL;while (p != NULL){q = p->next;free(p);p = q;}L->next = NULL;
}/*销毁单链表*/
void Destory_LinkList(LinkList& L)
{LNode* p = NULL;LNode* q = NULL;p = L;while (p != NULL){q = p->next;free(p);p = q;}L = NULL;
}bool jiaoji(LinkList& La, LinkList& Lb)
{LNode* pa = NULL;LNode* pb = NULL;LNode* pc = NULL;LNode* q = NULL;pa = La->next;pb = Lb->next;pc = La;La->next = NULL;if (pa == NULL && pb == NULL){cout << "两个单链表为空!!!" << endl;return ERROR;}while (pa != NULL && pb != NULL){if (pa->data == pb->data){pc->next = pa;pc = pa;pa = pa->next;q = pb;pb = pb->next;delete q;//或者用free(q);}else if (pa->data > pb->data){q = pb;pb = pb->next;delete q;}else //pa->data < pb->data{q = pa;pa = pa->next;delete q;}}while (pa != NULL){q = pa;pa = pa->next;delete q;}while (pb != NULL){q = pb;pb = pb->next;delete q;}pc->next = NULL;delete Lb;return OK;
}/*已知两个链表A和B分别表示两个集合,其元素递增排列。
请设计算法求出A与B的交集,并存放于A链表中。*/
//a: 1, 2, 2, 4, 5, 7, 8, 9, 10
//b: 1, 2, 3, 6, 7, 8int	main(void)
{LinkList a = NULL;Init_LinkList(a);LinkList_tail_instert(a);//1 2 2 4 5 7 8 9 10LinkList_All_value(a);LinkList b = NULL;Init_LinkList(b);LinkList_tail_instert(b);//1 2 3 6 7 8LinkList_All_value(b);jiaoji(a, b);LinkList_All_value(a);//打印两个单链表的交集return 0;
}

在这里插入图片描述

相关文章:

  • 【论文阅读笔记】Supervised Contrastive Learning
  • 根据nginx日志统计页面访问次数
  • MySQL 事务的底层原理和 MVCC(二)
  • 在Go编程中调用外部命令的几种场景
  • 2023年【安全生产监管人员】考试题及安全生产监管人员找解析
  • 【SpringBoot系列教程-目录大纲】
  • 存储日志数据并满足安全要求
  • MCU内存基础知识
  • bclinux aarch64 openeuler 20.03 LTS SP1 部署 fastCFS
  • 电动汽车充放电V2G模型MATLAB代码
  • 生产问题 Recv-Q101
  • 深度学习之生成唐诗案例(Pytorch版)
  • 【LeetCode刷题】--40.组合总和II
  • 【shell脚本】全自动完成pxe无人值守批量装机脚本,匹配centos系列
  • Jetson JetPack-5.1.2-L4T-R35.4.1 修复deskew algorithm的问题
  • .pyc 想到的一些问题
  • EventListener原理
  • gulp 教程
  • IDEA常用插件整理
  • iOS 颜色设置看我就够了
  • Java知识点总结(JavaIO-打印流)
  • Python_OOP
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Vue--数据传输
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 关于springcloud Gateway中的限流
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于webpack 的 vue 多页架构
  • 嵌入式文件系统
  • 在weex里面使用chart图表
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (九十四)函数和二维数组
  • (推荐)叮当——中文语音对话机器人
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • *** 2003
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .libPaths()设置包加载目录
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net CHARTING图表控件下载地址
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net的socket示例
  • .sh 的运行
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限