p9 第55题 两个有序单链表L1,L2求交的操作,得到新的链表L3,L3任然保持有序的状态 中国计量大学2016年数据结构题(c语言代码实现)

本文主要是介绍p9 第55题 两个有序单链表L1,L2求交的操作,得到新的链表L3,L3任然保持有序的状态 中国计量大学2016年数据结构题(c语言代码实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 本题代码如下

linklist merge(linklist* L1, linklist* L2)//将两个链表的公共元素合并产生新链表
{lnode* ra = (*L1)->next, * rb = (*L2)->next;lnode* r;lnode* s;lnode* C = (lnode*)malloc(sizeof(lnode));C->next = NULL;r = C;while (ra && rb)//循环跳出条件(有一个为空就跳出){if (ra->data < rb->data)//若A的当前元素较小,后移指针ra = ra->next;else if (ra->data > rb->data)//若B的当前元素较小,后移指针rb = rb->data;else//找到公共结点{s = (lnode*)malloc(sizeof(lnode));//创建一个结点s->data = ra->data;//复制产生的结点*sr->next = s;r = s;ra = ra->next;//A和B继续向后遍历rb = rb->next;}}r->next = NULL;//C的表尾结点置空return C;
}

完整测试代码

#include<stdio.h>
#include<stdlib.h>
typedef struct lnode
{int data;struct lnode* next;
}lnode, * linklist;
int n = 5;
int a[5] = { 1,2,3,4,5 };
int b[5] = { 2,4,5,6,7 };
void buildlinklist(linklist* L, int arr[], int n)//创建链表
{*L = (lnode*)malloc(sizeof(lnode));(*L)->next = NULL;lnode* s = *L, * r = *L;int i = 0;for (i = 0; i < n; i++){s = (lnode*)malloc(sizeof(lnode));s->data = arr[i];s->next = r->next;r->next = s;r = s;}r->next = NULL;
}
linklist merge(linklist* L1, linklist* L2)//将两个链表的公共元素合并产生新链表
{lnode* ra = (*L1)->next, * rb = (*L2)->next;lnode* r;lnode* s;lnode* C = (lnode*)malloc(sizeof(lnode));C->next = NULL;r = C;while (ra && rb)//循环跳出条件(有一个为空就跳出){if (ra->data < rb->data)//若A的当前元素较小,后移指针ra = ra->next;else if (ra->data > rb->data)//若B的当前元素较小,后移指针rb = rb->data;else//找到公共结点{s = (lnode*)malloc(sizeof(lnode));//创建一个结点s->data = ra->data;//复制产生的结点*sr->next = s;r = s;ra = ra->next;//A和B继续向后遍历rb = rb->next;}}r->next = NULL;//C的表尾结点置空return C;
}
void print(linklist* L)//输出单链表
{lnode* k = (*L)->next;while (k){printf("->%d", k->data);k = k->next;}
}
int main()
{linklist L1, L2;buildlinklist(&L1, a, n);buildlinklist(&L2, b, n);printf("L1链表为:");print(&L1);printf("\nL2链表为:");print(&L2);linklist C = merge(&L1, &L2);printf("\n合并后的链表为:");print(&C);return 0;
}

这篇关于p9 第55题 两个有序单链表L1,L2求交的操作,得到新的链表L3,L3任然保持有序的状态 中国计量大学2016年数据结构题(c语言代码实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/430554

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服