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

功  能: 设计算法,将两个单链表数组的特定位序, 相同者,链接起来
编程人: 王涛
详细博客: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.hqwc.cn/news/617298.html

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

相关文章

认识异常(2)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…

基于SSM+Jsp+Mysql的旅游网站设计与实现

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

74HC595引脚图时序图工作原理

74HC595和74hc164一样是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号&#xff0c;常用在各种数码管以及点阵屏的驱动芯片&#xff0c; 使用74HC595可以节约单片机mcu的io口资源&#xff0c;用3个io就可以控制8个数码管的引脚&#xff0c;他还具有一定的…

【Kafka】Kafka 架构深入

Kafka 工作流程及文件存储机制 Kafka 中消息是以 topic 进行分类的&#xff0c;生产者生产消息&#xff0c;消费者消费消息&#xff0c;都是面向 topic 的。 topic 是逻辑上的概念&#xff0c;而 partition 是物理上的概念&#xff0c;每个 partition 对应于一个 log 文件&am…

服务器docker应用一览

文章目录 一、需求概况二、业务流程三、运行效果四、实现过程1. 基础前提2. 源码放送3.核心代码4. 项目打包5.部署步骤 一、需求概况 现有某云主机服务器&#xff0c;用来做项目演示用&#xff0c;上面运行了docker应用&#xff0c;现希望有一总览页面&#xff0c;用来展示部署…

Java并发--锁

锁 volatile关键字 volatile可以保证变量的可见性&#xff0c;如果我们将变量声明为volatile&#xff0c;那么每次使用它都在主存内进行读取&#xff0c;保证其他线程能准确无误的读取到本线程对变量的修改。 底层&#xff1a; volatile关键字修饰变量的时候&#xff0c;本…

【C++庖丁解牛】底层为红黑树结构的关联式容器--哈希容器(unordered_map和unordered_set)

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1. unordered系列关联式容…

网络篇10 | 网络层 IP

网络篇10 | 网络层 IP 01 简介02 名称解释03 IP报文格式(IPv4)1&#xff09;4位版本协议(version)2&#xff09;4位首部长度(header length)3&#xff09;8位服务类型(Type Of Service, TOS)4&#xff09;16位总长度5&#xff09;16位(分片)标识6&#xff09;3位(分片)标志7&am…

【C++类和对象】构造函数与析构函数

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

Linux虚拟内存简介

Linux&#xff0c;像多数现代内核一样&#xff0c;采用了虚拟内存管理技术。该技术利用了大多数程序的一个典型特征&#xff0c;即访问局部性&#xff08;locality of reference&#xff09;&#xff0c;以求高效使用CPU和RAM&#xff08;物理内存&#xff09;资源。大多数程序…

大语言模型总结整理(不定期更新)

《【快捷部署】016_Ollama&#xff08;CPU only版&#xff09;》 介绍了如何一键快捷部署Ollama&#xff0c;今天就来看一下受欢迎的模型。 模型简介gemmaGemma是由谷歌及其DeepMind团队开发的一个新的开放模型。参数&#xff1a;2B&#xff08;1.6GB&#xff09;、7B&#xff…

ROS 2边学边练(22)-- 又见动作(action)

前言 我们在之前体验过各种通信方法&#xff08;主题、服务、动作&#xff09;&#xff0c;并且也构建了自定义了一些msg和srv&#xff0c;那么同样的&#xff0c;对于action&#xff0c;同样支持自定义。我们来试试吧&#xff08;动作的概念及流程还请翻到之前的博客进行查看&…