C语言已知单链表LA=(a1,a2,…,am)和LB=(b1,b2,…,bn),编写程序按以下规则将它们合并成一个单链表LC,
LC=(a1,b1,…,am,bm,bm+1,…,bn),m<=n
或者
LC=(a1,b1,…,bn,an,an+1,…,am),m>n
/*
开发者:慢蜗牛 开发时间:2020.6.11
程序功能:合并链表
*/
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define LEN sizeof(struct L)
void print(struct L* head);
void insert(struct L* p1, struct L* p2);
struct L//创建结构体
{
int a;
struct L* next;
};
int n;
struct L* creat()//建立链表
{
struct L* head;
struct L* p1, * p2;
n = 0;
p1 = p2 = (struct L*)malloc(LEN);
scanf_s("%d", &p1->a);
head = NULL;
while (p1->a != -1)
{
n = n + 1;
if (n == 1) head = p1;
else p2->next = p1;
p2 = p1;
p1 = (struct L*)malloc(LEN);
scanf_s("%d", &p1->a);
}
p2->next = NULL;
return(head);
}
void print(struct L* head)//输出具有头结点的列表
{
struct L* p;
p = head->next;
if (head != NULL)
do
{
printf("--%d ", p->a);
p = p->next;
} while (p != NULL);
}
void insert(struct L* p1, struct L* p2)//从小到大合并递增链表
{
struct L* LC, * r;
LC = (struct L*)malloc(LEN);
LC->next = p1;
r = LC;
while (p1 && p2)
{
if (p1->a <= p2->a)
{
r->next = p1;
r = p1;
p1 = p1->next;
}
else
{
r->next = p2;
r = p2;
p2 = p2->next;
}
}
if (p1 == NULL) r->next = p2;
else r->next = p1;
print(LC);
}
void main()//主函数
{
struct L* LA, * LB;
printf("请输入LA的数据:");
LA = creat();
printf("请输入LB的数据:");
LB = creat();
printf("LC=");
insert(LA, LB);
}
C语言已知单链表LA=(a1,a2,…,am)和LB=(b1,b2,…,bn),编写程序按以下规则将它们合并成一个单链表LC,的更多相关文章
- 数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2···am),(b1,b2···bn),将两个顺序表位置互换
将数组中的两个顺序表位置互换,即将(b1,b2···bn)放到(a1,a2···am)前边. 解法一: 将数组中的全部元素(a1,a2,···am,b1,b2,···bn)原地逆置为(bn,bn-1, ...
- WCF 已知类型和泛型解析程序 KnownType
数据协定继承 已知类型和泛型解析程序 Juval Lowy 下载代码示例 自首次发布以来,Windows Communication Foundation (WCF) 开发人员便必须处理数据协定继承方 ...
- 【LeetCode】23. Merge k Sorted Lists 合并K个升序链表
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:合并,链表,单链表,题解,leetcode, 力扣,Py ...
- leecode刷题(27)-- 合并k个排序链表
leecode刷题(27)-- 合并k个排序链表 合并k个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1-> ...
- 已知单链表的数据元素为整型数且递增有序,L为单链表的哨兵指针。编写算法将表中值大于X小于Y的所有结点的顺序逆置。(C语言)
对此题目的完整示例可直接运行代码如下: #include <stdio.h> #include <stdlib.h> typedef struct LNode{ int dat ...
- O(1)时间删除链表的已知结点
这题并不需要从头结点遍历到已知结点,只需要知道已知结点,将改结点下一个结点赋值给它,再删除这个下一个结点就行,其中还需要考虑各种情况. 1)链表为空或者已知结点为空 2)链表只有一个结点,这个结点就是 ...
- OpenCV使用二维特征点(Features2D)和单映射(Homography)寻找已知物体
使用二维特征点(Features2D)和单映射(Homography)寻找已知物体 目标 在本教程中我们将涉及以下内容: 使用函数 findHomography 寻找匹配上的关键点的变换. 使用函数 ...
- 已知一个序列A1.A2….An,给你一个整数K,找到满足所有Ai+Aj>=k的数对(i,j)的个数
#include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 100010 /* 已知一个序 ...
- iconv简介(1、字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2、编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有linux等)
iconv简介(1.字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2.编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有lin ...
- 【C语言】已知三角形三边长,求三角形面积
一. 数学基础: 已知三角形的三边,计算三角形面积,需要用到海伦公式: 即p=(a+b+c)/2 二. 算法: 输入三个边长,套用海伦公式计算面积,并输出. 可以先判断是否可以构成三角形,即任意两边之 ...
随机推荐
- 使用 VirtualBox+Vagrant 创建 CentOS7 虚拟机
一.准备工作 1.1 软件下载 VirtualBox:Downloads – Oracle VM VirtualBox Vagrant:Install | Vagrant | HashiCorp De ...
- 桌面应用打包:pyinstaller
1 背景 在使用python开发一些小工具时,如果其他人电脑中没有python环境或者没有安装相应的第三方库,是没办法运行的,而要求对方安装又不现实,尤其是对方不是技术人员,因此如何将一个独立的pyt ...
- 基于C#的消息处理的应用程序 - 开源研究系列文章
今天讲讲基于C#里的基于消息处理的应用程序的一个例子. 我们知道,Windows操作系统的程序是基于消息处理的.也就是说,程序接收到消息代码定义,然后根据消息代码定义去处理对应的操作.前面有一个博文例 ...
- 4.2 C++ Boost 内存池管理库
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...
- 详解 canal 同步 MySQL 增量数据到 ES
canal 是阿里知名的开源项目,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费. 这篇文章,我们手把手向同学们展示使用 canal 将 MySQL 增量数据同步到 ES . ...
- 如何通过关键词搜索API接口获取1688的商品详情
如果你是一位电商运营者或者是想要进行1688平台产品调研的人员,你可能需要借助API接口来获取你所需要的信息.在这篇文章中,我们将会讨论如何通过关键词搜索API接口获取1688的商品详情. 第一步:获 ...
- 如何通过API接口获取淘宝的店铺所有商品详情
在电子商务领域中,淘宝是亚洲最大的在线交易平台之一,拥有海量的商品资源和消费者.如果你是一名开发者,想要在自己的网站或者APP中嵌入淘宝商品资源,那么你就需要通过淘宝开放平台提供的API接口来获取这些 ...
- 如何在.NET电子表格应用程序中创建流程图
前言 流程图是一种常用的图形化工具,用于展示过程中事件.决策和操作的顺序和关系.它通过使用不同形状的图标和箭头线条,将任务和步骤按照特定的顺序连接起来,以便清晰地表示一个过程的执行流程. 在企业环境中 ...
- 基于百度AI实现文字和图像敏感内容审核
前言 百度AI是指百度公司的人工智能技术全称.它采用深度学习技术,包括自然语言处理.语音识别.计算机视觉.知识图谱等,可应用于各个领域如互联网.医疗.金融.教育.汽车.物流等.百度AI的发展将帮助人类 ...
- Solution Set -「ABC 192」
「ABC 113A」Star Link. 略. #include<cstdio> int x; int main() { scanf("%d",&x); for ...