算法库应用- 表的自然链接

功  能: 设计算法,将两个单链表数组的特定位序, 相同者,链接起来
编程人: 王涛
详细博客:https://blog.csdn.net/qq_57484399/article/details/127161982
时  间: 2024.4.14
版  本: V1.0

V1.0

main.cpp

/*****************************************
功  能: 设计算法,将两个单链表数组的特定位序, 相同者,链接起来
编程人: 王涛
详细博客:https://blog.csdn.net/qq_57484399/article/details/127161982
时  间: 2024.4.14
版  本: V1.0
******************************************/
#include <stdio.h>
#include <malloc.h>#define MaxCol 10typedef int ElemType;typedef struct dataNode
{ElemType date[MaxCol];  //存储数据的节点数组struct dataNode *next;     //定义节点的前驱指针
}DataList;typedef struct headNode
{int row;    //头结点数据存储链表的 行数和列数int columns;DataList *next;  //头结点的后继指针类型是 DataList}HeadList;void CreatTable(HeadList *&new_table)
{int i,j;DataList *tailNode; //尾指针节点DataList *dataNode; //数据新节点new_table = (HeadList*)malloc(sizeof(HeadList));new_table->next = NULL;//基本头结点创建成功//下面分配行列数printf("请输入表的行数和列数:");scanf("%d%d",&new_table->row,&new_table->columns);//头结点基本创建完成//下面遍历输入数据节点for(i = 0;i < new_table->row; i++){printf("请输入第%d行的数据:",i+1);//为每行数组分配空间dataNode = (DataList*)malloc(sizeof(DataList));for(j = 0;j < new_table->columns; j++){scanf("%d",&dataNode->date[j]);}//数据填充完毕, 开始 尾插法插入头结点之后(head和data节点类型不一致,区分插入)if(new_table->next == NULL){new_table->next = dataNode;}else{tailNode->next = dataNode;}tailNode = dataNode;    //尾结点指向新节点}//尾指针置空tailNode->next = NULL;
}
/*****************************************//定义指针指向数据节点//while(数据节点不为空){//()for循环遍历数组//遍历完指针后移//}//记得换行回车
******************************************/
void DisplayTable(HeadList *showTable)
{int i;//定义指针指向数据节点dataNode *nowNode = showTable->next;//while(数据节点不为空){printf("\n");while(nowNode != NULL){//()for循环遍历数组for(i = 0; i < showTable->columns; i++){printf("%2d",nowNode->date[i]);printf(" ");}//记得换行回车printf("\n");printf("\n");//遍历完指针后移nowNode = nowNode->next;}}void LinkTable(HeadList *first_table,HeadList *second_table,HeadList *&result_table)
{DataList *firstNode;DataList *secondNode;DataList *newNode;DataList *tailNode;int connect_table1,connect_table2;int serial_number;  //数组序号//result_table 头节点建立好 (列 = first_table->columns + second_table->columns),行不确定result_table = (HeadList*)malloc(sizeof(HeadList));result_table->columns = first_table->columns + second_table->columns;result_table->row = 0;  //目前是0//然后头结点next置空result_table->next = NULL;//while 遍历 first_table每个节点 ,firstNode = first_table->next;secondNode = second_table->next;printf("表1连接的数组位序:");scanf("%d",&connect_table1);getchar();getchar();printf("表2连接的数组位序:");scanf("%d",&connect_table2);while(firstNode != NULL){secondNode = second_table->next;//每次都重新遍历//拿first_table一个节点 遍历 second_table的所有节点while(secondNode != NULL){//判断特定行,特定列, 相等,则链接相关数组for循环if(secondNode->date[connect_table2-1] == firstNode->date[connect_table1-1]){newNode = (DataList*)malloc(sizeof(DataList));//连接两数组(first先, second后)for(serial_number = 0; serial_number < first_table->columns;serial_number++){newNode->date[serial_number] = firstNode->date[serial_number];}for(serial_number = 0;serial_number < second_table->columns;serial_number++){newNode->date[(first_table->columns)+serial_number] = secondNode->date[serial_number];}if(result_table->next == NULL){result_table->next = newNode;}else{tailNode->next = newNode;}tailNode =  newNode;result_table->row++;//尾插法插入result_table后}secondNode = secondNode->next;}firstNode = firstNode->next;}//result_table尾结点 置空tailNode->next = NULL;
}int main()
{HeadList *first_table;  //代表要处理第一个表HeadList *second_table; //代表第要处理二个表HeadList *result_table;  //两个表处理后,存储结果的表Cprintf("表1:\n");//用头结点建表CreatTable(first_table);printf("表2:\n");//头结点建表CreatTable(second_table);//处理两个表LinkTable(first_table,second_table,result_table);DisplayTable(result_table);return 0;
}

v1.0运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:环境基础开发工具使用

文章目录 前言1.Linux下的软件安装1.1 什么是软件包1.2 如何安装软件1.3 如何卸载软件 2.vim2.1 vim的基本概念2.2 vim的基本操作2.3 vim正常模式命令集2.4 vim末行模式命令集2.5 vim的操作总结 3.Linux下的编译器&#xff1a;gcc3.1 gcc的使用3.2 gcc是如何工作的3.2.1 预处理…

嵌入式学习54-ARM3(中断和时钟)

S3c2440中断控制器 内部外设&#xff1a; DMA &#xff1a;&#xff08;直接内存存取&#xff09; Direct Memor…

基于Linux定时任务实现的MySQL周期性备份

1、创建备份目录 sudo mkdir -p /var/backups/mysql/database_name2、创建备份脚本 sudo touch /var/backups/mysql/mysqldump.sh# 用VIM编辑脚本文件&#xff0c;写入备份命令 sudo vim /var/backups/mysql/mysqldump.sh# 内如如下 #!/bin/bash mysqldump -uroot --single-…

数据库的负载均衡,高可用实验

一 高可用负载均衡集群数据库实验 1.实验拓扑图 2.实验准备(同一LAN区段)&#xff08;ntp DNS&#xff09; 客户端&#xff1a;IP&#xff1a;192.168.1.5 下载&#xff1a;MariaDB 负载均衡器&#xff1a;IP&#xff1a;192.168.1.1 下载&#xff1a;keepalived ipvsadm I…

操作系统银行家算法计算题

设系统某个T0时刻的状态&#xff0c;如表1所示&#xff1a; 表1 系统资源状态表使用银行家算法回答下面问题&#xff1a; &#xff08;1&#xff09;系统在T0时刻状态是否安全&#xff1f;若安全&#xff0c;请给出一个安全序列。 &#xff08;2&#xff09;假如T0时刻进程P1…

C语言指针进阶:数组与指针的联系

目录 1. 数组名的本质2. 使用指针访问数组3. 一维数组传参的本质4. 二级指针5. 指针数组5.1 指针数组模拟二维数组 正文开始。 1. 数组名的本质 数组名代表着这个数组中第一个元素的地址 例如&#xff1a; int arr[4] { 1,2,3,4 }; int *p1 &arr[0]; int *p2 arr;上述…

【智能优化算法】河马优化算法(Hippopotamus optimization algorithm,HO)

河马优化算法&#xff08;Hippopotamus optimization algorithm&#xff0c;HO&#xff09;是发表在中科院二区期刊“Scientific Reports”的文章“Hippopotamus Optimization Algorithm: a Novel Nature-Inspired Optimization Algorithm”上的算法。 01.引言 河马优化算法&a…

响应式导航栏不会做?看我一分钟学会制作导航栏!

引言 随着互联网技术的飞速发展&#xff0c;用户体验在网页设计中的重要性日益凸显。其中&#xff0c;导航栏作为网页的“指南针”&#xff0c;不仅能帮助用户快速定位所需内容&#xff0c;还能体现网站的整体风格和设计理念。本文将介绍如何使用HTML、CSS和JavaScript制作一个…

SpringBoot 微服务token 传递实现

1、前言 随着微服务的流行&#xff0c;微服务之间的安全以及业务需要&#xff0c;都需要穿递token &#xff0c;而token的传递一般通过header 头来传递。从架构的角度来讲 &#xff0c;一般的企业应用都由nginx、业务网关和各个微服务组成。这个nginx 传递header 我就不讲述。下…

[附带黑子定制款鸽鸽版素材包]更改文件夹图标,更改系统音效,更改鼠标指针及样式。

更改文件夹图标 1.选择图片在线格式转换网站转换为ico格式 2.右键文件夹选择属性 3.点击自定义&#xff0c;点击更改图标超链接 4.点击预览选择生成的ico文件 5.点击打开&#xff0c;点击确定&#xff0c;点击应用 更改系统音效&#xff08;真爱粉强烈推荐&#xff09; 1…

react query 学习笔记

文章目录 react query 学习笔记查询客户端 QueryClient获取查询客户端 useQueryClient异步重新请求数据 queryClient.fetchQuery /使查询失效 queryClient.invalidateQueries 与 重新请求数据queryClient.refetchQueries 查询 QueriesuseQuery查询配置对象查询的键值 Query Key…

老板最怕你出这样的代码。。。

大家好&#xff0c; 这一个月时间&#xff0c;阿里巴巴、滴滴、腾讯都发生过应用线上故障的事情&#xff0c;很多同学说是降本增“笑”的后果然后圈内流传一个新想法&#xff0c;为了避免“开源节流” 的事情&#xff0c;工作中要写一些防御性的代码。 什么意思&#xff1f;就…

现代电商会员管理新玩法——付费会员

现在&#xff0c;无论是线上还是线下&#xff0c;几乎都在做会员管理。会员规则五花八门&#xff0c;不仅有常见的注册会员&#xff0c;还出现了付费会员。付费会员机制&#xff0c;从成为会员的第一步就开始筛选&#xff0c;选出粘性高、要求高、复购高且有一定消费力的用户群…

JVM、maven、Nexus

一、jvm简介 1.应用程序申请内存时出现的三种情况&#xff1a; ①OOM:内存溢出&#xff0c;是指应用系统中存在无法回收的内存或使用的内存过多&#xff0c;最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了&#xff0c;系统会提示内存溢出&#xff0c…

网络篇11 | 网络层 ICMP

网络篇11 | 网络层 ICMP 01 简介02 报文格式1&#xff09;Type(类型)2&#xff09;Code(代码)3&#xff09;Checksum(校验和)4&#xff09;ICMP数据部分 03 ICMP数据抓包1&#xff09;类型 8&#xff1a;回显请求&#xff08;Echo Request&#xff09;2&#xff09;类型 13&…

[Java、Android面试]_18_详解Handler机制 常见handler面试题(非常重要,非常高频!!)

本人今年参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料。 整理成了面试系列&#xff0c;由于时间有限&#xff0c;每天整理一点&#xff0c;后续会陆续分享出来&#xff0c;感兴趣的朋友可关注收…

【智能优化算法】人工原生动物优化器(APO)

人工原生动物优化器(Artificial Protozoa Optimizer&#xff0c;APO)是发表在中科院一区期刊‘Knowledge-Based Systems’期刊上“Artificial Protozoa Optimizer (APO): A novel bio-inspired metaheuristic algorithm for engineering optimization”这篇文章上的算法。 01.引…

下载好了annaconda,但是在创建一个新的Conda虚拟环境报错

文章目录 问题描述&#xff1a;解决方案1.生成一个配置文件 问题总结 问题描述&#xff1a; ProxyError(MaxRetryError(“HTTPSConnectionPool(host‘repo.anaconda.com’, port443): Max retries exceeded with url: /pkgs/pro/win-64/repodata.json.bz2 (Caused by ProxyErr…

基于深度学习的智能停车场车牌识别计费系统(完整程序+训练数据集+开题报告+论文))

摘要 本篇论文研究的是基于车牌识别技术的智能停车场管理系统&#xff0c;采用基于深度学习的车牌识别算法&#xff0c;通过卷积神经网络对车牌图像进行处理和分析&#xff0c;实现车牌字符的识别和车牌信息的提取。同时&#xff0c;本文还设计了一个智能停车场管理系统&#x…

2024最新版守约者二级域名分发系统

主要功能 二级域名管理&#xff1a;我们的系统提供全面的二级域名管理服务&#xff0c;让您轻松管理和配置二级域名。 域名分发&#xff1a;利用我们先进的域名分发技术&#xff0c;您可以自动化地分配和管理域名&#xff0c;确保每个用户或客户都能及时获得所需的域名资源。 自…