7-16 两个有序链表序列的交集(20 分)

基础编程题目集 编程题部分 ★★ 7-22 龟兔赛跑 (20分) ★★★ 7-23 币值转换 (20分) 中文习惯读数字 【约瑟夫环】7-28 猴子选大王 (20分) ★ 7-29 删除字符串中的子串 (20分) ★★★ 7-37 整数分解为若干项之和 (20分) ★★★ 7-38 数列求和-加强版 (20分) 阅读详情
7-16 两个有序链表序列的交集(20 分)

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。

输入格式:

输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。

输出格式:

在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。

输入样例:

1 2 5 -1
2 4 5 8 10 -1

输出样例:

2 5
这个用数组模拟过不了
code:
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//一个开始用数组最后一个点总是过不了,就老实写链表了
struct Node{
	int Data;
	struct Node* Next;
};//链表结构体
typedef struct Node* List;
//创建一个链表
List Creat(){
	List head = (List)malloc(sizeof(struct Node)),q;
	head->Next = NULL;
	q = head;//创建头结点的链表 
	int x;
	while(~scanf("%d",&x)&&x!=-1){
		List p = (List)malloc(sizeof(struct Node));
		p->Data = x;
		p->Next = NULL;//赋值操作 
		q->Next = p;//前一个的下一个为新创建的结点 
		q = p;//尾指针指向最后一个 
	} 
	return head;
} 

//求交集
List Merge(List a,List b){
	a = a->Next;
	b = b->Next;//分别指向第一个有效结点
	//创建交集链表的表头
	List head = (List)malloc(sizeof(struct Node));
	head->Next = NULL;
	List q = head; 
	while(a&&b){
		if(a==NULL||a->Data > b->Data){
			b = b->Next;//如果a为空,或者a比b大,a不能移动了,b往后移找更大的 
		}
		else if(b==NULL||b->Data > a->Data){
			a = a->Next;//同理 
		}
		else{//相同创建新的交集链表 
			List p = (List)malloc(sizeof(struct Node));
			p->Data = b->Data;
			p->Next = NULL;
			q->Next = p;
			q = p;
			a = a->Next;
			b = b->Next;//同时移动到下一个 
		}
	}
	return head;
}

//打印链表 
void printList(List a){
	a = a->Next;
	if(a==NULL){//为空输出NULL; 
		printf("NULL\n");
		return;
	}
	int flag = 0;
	while(a!=NULL){
		if(!flag)printf("%d",a->Data);
		else printf(" %d",a->Data);
		flag = 1;
		a = a->Next;//移动下一个,老是忘。。。。 
	}
	puts("");
	return;
} 
int main(){
	List a = Creat();
	List b = Creat();
	List c = Merge(a,b);
	printList(c);
	return 0;
}


7-1 两个有序链表序列的交集 (25 分)【满分+详解】 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。 输入样例: 1 2 5 -1 2 4 5 8 10 -1 输出样例: 2 ... 阅读详情

相关推荐

PTA 两个有序链表序列的交集 (20分)

因为写完合并写的这个,写起来轻松了很多。 两个有序链表序列的交集 (20分) 作者:DS课程组 单位:浙江大学 代码长度限制:16 KB 时间限制:1000 ms 内存限制:64 MB 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出...

weixin_46776156的博客 1921

malloc函数&&free函数

malloc函数 头文件:stdlib.h,若代码中涉及内存的分配、释放,需要写:#include<stdlib.h> 函数原型:void* malloc (size_t size); 功能:Allocate memory block (动态分配内存)   Allocates a block of size bytes of memory, returning a pointer to...

花椒胡椒小辣椒的个人博客 356

国际参考电离层2020模型Matlab(IRI-2020)

国际参考电离层 (IRI) 是一个国际项目 由空间研究委员会 (COSPAR) 和国际 无线电科学联盟 (URSI)。这些组织组成了一个工作组 (在 60 年代后期产生了电离层的经验标准模型, 基于所有可用数据源 (几个稳步改进的版本 模型已经发布。电子密度、电子温度、离子温度、 离子组成(O+、H+、He+、N+、NO+、O+2、簇离子)、赤道垂直离子漂移、垂直电离层电子含量(vTEC;

weixin_44392003的博客 4879

数据结构—线性表

线性表的操作 (一)单链表的操作 (1)用随机函数生成8个3位整数(100~999),把这些整数存于单链表中; (2)输出单链表的内容; (3)读入一个整数,查看该整数是否在表中,若在,输出其位置(首位置为1); (4)读入一个整数,以及要插入的位置,把该整数插入到单链表中,输出单链表的内容(要求判断输入的位置是否合理); (5)读入一个整数,若该整数在单链表里,删除该整数,输出单链表的内容; (6)把链单表的内容翻转,输出单链表的内容。 //链式存储的线性表 /* 李子木 */

m0_57534474的博客 1153

西瓜书第二章——模型评估与选择(十折交叉验证/查准查全F1)

第二章——模型评估与选择

xsddys的博客 953

开源收银系统_大型收银系统源码_OctShop

开源收银系统正成为大型连锁企业数字化转型的关键工具。相比传统闭源系统,开源方案具有成本低(年均降本60%+)、定制灵活(支持多业态协同)、自主可控等优势,能有效解决高并发、多门店数据同步等痛点。核心价值在于:1)分布式架构适配规模化扩张;2)模块化设计实现个性化开发;3)开放接口打通ERP/CRM等系统。典型案例显示,连锁商超通过源码二次开发实现库存实时同步,补货效率提升50%;餐饮集团统一多业态收银流程后会员复购率增长35%。选型需关注源码成熟度、技术兼容性和安全合规,建议采用"开源+服务商&q

OctShop全栈工程师 938

第三章 线性结构 线性表

1、顺序表 #include<stdio.h> #include<stdlib.h> const int N = 1000; typedef int Position; // 数组下标 typedef struct LNode *PtrToLNode; struct LNode // 节点表示的东西 { int Data[N]; // 数据 Position Last; // 位置 }; typedef PtrToLNode List; List L; /

RGHLY21的博客 1788

CloudCompare 多窗口联动显示点云

CloudCompare支持多窗口联动显示多个点云数据,可以用来比对原始点云数据与语义分割后的结果。 一、创建多个视窗 打开CloudCompare后会默认有一个视图,我们要同时打开两个数据就需要再创建一个视图,选择菜单栏里的3D Views,在下拉菜单中点击new,这样就创建了一个新的视图,这时3D Views的下拉菜单中有3D View 1和3D View 2两个视图,然后点击3D Views下拉菜单中的Title,这时在数据展示区就会出现两个并列的窗口。 二、分别加载点云数据 将数据分别拖进两个

zhaoguanhua的博客 2739

单链表实现一元多项式乘法与加法运算(C语言)

#include&lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef struct Node *PtrToNode; struct Node{ int coe; int exp; PtrToNode next; }; typedef PtrToNode List; List read(); void Print( List L ); List ...

AllenRicard的博客 6100

PCL 基于强度的双边滤波【2026最新版】

基于强度信息的双边滤波代码实现、滤波前后点云未出现变化的原因以及获取带有强度pcd点云的方法。本文由优快云点云侠原创,博客长期更新,本文最近一次更新时间为:2026年5月24日。

点云侠的博客 29万+

超十万字解读Spring AI实战:开篇

大模型技术正以惊人的速度改变世界,2025年的人工智能已不再是科幻,而是现实。大模型如ChatGPT等,正在重塑各行各业,降低技术门槛,使专业能力普及化。SpringAI的出现为Java开发者提供了桥梁,使其能在企业级系统中稳定运行AI,同时保持工程化思维。尽管SpringAI在生态、学习成本和性能上存在不足,但其企业级基因和国产化适配能力使其成为Java开发者的重要工具。本系列文章旨在介绍SpringAI的功能与特性,鼓励更多Java开发者参与AI实践,共同探索AI时代的无限可能。

liaokailin的专栏 1575

两个有序链表序列的交集

题目:https://pintia.cn/problem-sets/15/problems/2999 思路: 用数组存储数据,设两个指针分别扫描两个数组,比较两个指针指向数据的大小,较小的继续向后扫描,相同就记录下来,直至其中一个数组尾部,结束扫描。 注意: 第五个测试点数据量较大。 代码: #include <iostream> #include <vector&g...

mike___mike的博客 445

CQE和SQE 以及 PQA和DQA的区别

‌:PQA聚焦产品全生命周期流程管理,DQA专注于设计阶段的质量控制。

a1809032425的博客 1902

7-2 两个有序链表序列的交集 (20分)

7-2两个有序链表序列的交集(20分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。 输入样例: 1 2 5 -1 2 4 5 8 10 -1 输出样例: 2 5 作者 DS课程组 单位 浙江大..

云杉木屋 1255

MAC-电脑中的user文件夹在哪?

MAC-电脑中的user文件夹在哪?

兴趣是最好的老师 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

7-1 两个有序链表序列的合并 (20分)

7-1两个有序链表序列的合并(20分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。 输入样例: 1 3 5 -1 2 4 6 8 10 -1 输出样例: 1 2 3 4 5 6 8 10 作..

云杉木屋 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PTA 两个有序链表序列的合并 (20分)

PTA 两个有序链表序列的合并 (20分) 作者:DS课程组 单位:浙江大学 代码长度限制:16 KB 时间限制:1500 ms 内存限制:128 MB 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出合...

weixin_46776156的博客 4056

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

7-52 两个有序链表序列的交集 (20分)

最后一个测试点超时 1 #include <iostream> 2 #include <vector> 3 #include <string> 4 using namespace std; 5 int main() 6 { 7 vector<int>l1, l2, l3; 8 while (1) 9 ...

weixin_43646077的博客 393

5-16 两个有序链表序列的交集

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用-1−1表示序列的结尾(-1−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。 输入样例: 1 2 5 -1 2

明的博客 1226

两个有序链表序列的交集 C++

两个有序链表序列的交集作者 DS课程组单位 浙江大学已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。

2302_81099651的博客 538

PTA R7-1 两个有序链表序列的交集 C++

R7-1 两个有序链表序列的交集分数 20作者 DS课程组单位 浙江大学已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。

WeFun_Han的博客 857

数据结构链表-7-2 两个有序链表序列的交集分数

7-2 两个有序链表序列的交集分数 20全屏浏览切换布局作者 DS课程组单位 浙江大学已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。

2302_80130040的博客 304

数据结构-链表相关-两个有序链表序列的交集

7-3两个有序链表序列的交集(20分) 时间限制: 1000 ms 内存限制: 64 MB 代码长度限制: 16 KB 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。...

huang 278

1-7 两个有序链表序列的交集

两个有序链表序列的交集

manerzi的博客 156
上一篇: 7-15 两个有序链表序列的合并(20 分)
下一篇: 7-17 The World's Richest(25 分)(结构体排序)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值