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

2023-10-29

在这里插入图片描述
在这里插入图片描述

记录这道题是因为被一个bug磨了很久很久,大概4个小时(自闭了), 一直以为是自己的单链表知识不够才错的,妹想到是因为出现死循环…
在这里插入图片描述

问了同学才知道错在这里:

while(p1!=NULL)
	{
		p2=s2;
		//这里!!!!!!!!!!!!!
		while(p1->data!=p2->data&&p2)
		{
			p2=p2->next;
		}
		
		if(p1->data==p2->data)
		{
			LNode *pr=new LNode;
			pr->data=p1->data;
			pr->next=NULL;
			if(L==NULL)
			{
				L=pr;
				p3=L;
			}
			else
			{
				p3->next=pr;
				p3=pr;
			}
			
		}
		p1=p1->next;
	}

在这里插入图片描述

里面的循环一直走,就得不到答案(也不知道为什么明明while有对于j的判断会死循环…)…于是有了这样的代码:

大规模数据的点过不了,因为是双层循环。

#include<iostream>
using namespace std;

typedef struct LNode
{
 int data;
 struct LNode *next;
}LNode,*LinkList;

void createList(LinkList &L)
{
 L=new LNode;
 L->next=NULL;
 LinkList p,s=L;//s是扫描指针 
 int n;
 while(cin>>n&&n!=-1)
 {
  p=new LNode;
  p->data=n;
  p->next=NULL;
  s->next=p;
  s=p;
 }

}

void Union(LinkList &s1,LinkList &s2,LinkList &s3)
{
 s3=new LNode;
 s3->next=NULL;
 LinkList i=s1->next;
 LinkList j=s2->next;
 LinkList k=s3;
 
 while(i)
 {
  j=s2->next;
  int flag=1;
  while((i->data!=j->data)&&j)
  {
   j=j->next;
   
   //血的教训!如果没有这个if会死循环 
   if(j==NULL){
    
    flag=0;
    
    break;
   }
  }


  if(flag==1){

   LinkList p=new LNode;
   p->data=i->data;
   p->next=NULL;
   k->next=p;
   k=p;
  }
    
 
  i=i->next;
 }
 
}


int main()
{
 LinkList s1,s2,s3;
 createList(s1);
 createList(s2);
 Union(s1,s2,s3);
 
 LinkList p=s3->next;

 if(p==NULL)
 {
  cout<<"NULL";
  return 0;
 }
 else{

  while(p)
  {
   if(p->next!=NULL){
    cout<<p->data<<" ";
   }
   else{
    cout<<p->data; 
   }
   p=p->next;
  }
 }
  

 return 0;
}

AC代码:
用两个指针比较。是对着不愿意透露姓名的W同学的代码抄的,感谢他!

#include<bits/stdc++.h>
using namespace std;

typedef struct Lnode{
 int data;
 struct Lnode *next;
}Lnode,*Linklist;

void Create_List(Linklist &L){
 L = new Lnode;
 L->next=NULL;
 Linklist p;
 Linklist r=L;
 int x;
 while(cin>>x){
  if(x==-1) break;
  else{
   p=new Lnode;
   p->data=x;
   p->next=NULL;
   r->next=p;
   r=p;
  }
 }
}

void function1(Linklist &s1,Linklist &s2,Linklist &s3){
 s3= new Lnode;
 s3->next=NULL;
 Linklist i=s1->next;
 Linklist j=s2->next;
 Linklist k=s3;
 while(i&&j){
  if(i->data>j->data){
   j=j->next;
  }
  else if(i->data<j->data){
   i=i->next;
  }
  else{
   Linklist p=new Lnode;
   p->next=NULL;
   p->data=i->data;
   k->next=p;
   k=p; 
   i=i->next;
   j=j->next;
  }
  
 } 
}
int main(){
 Linklist s1,s2,s3;
 Create_List(s1);
 Create_List(s2);
 function1(s1,s2,s3);
 Linklist p=s3->next;
 if(p==NULL){
  cout<<"NULL"<<endl;
 } 
 else{
  int flag=0;
  while(p){
   if(flag) cout<<" ";
   cout<<p->data;
   p=p->next;
   flag++;
  }
 }
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【PTA】两个有序链表序列的交集 (20 分) 的相关文章

  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud

随机推荐

  • excel文件无法打印提示内存不足_打开Excel时,提示“Excel词典(XLLEX.DLL)文件丢失或损坏”...

    使用的是OFFICE2007完整版 一直都是正常的 突然打开Excel时 提示 Excel词典 XLLEX DLL 文件丢失或损坏 怎么办 打开Excel时 提示 Excel词典 XLLEX DLL 文件丢失或损坏 答 出现这种情况 是因为
  • 使用Apache CXF和Apache Axis2实现Web Services客户端

    记录 314 场景 在Spring Boot微应用上 使用Apache CXF框架实现Web Services客户端 调用Web Services服务端 使用Apache Axis2框架实现Web Services客户端 调用Web Ser
  • python判断某一字符是否在字符串中的函数_Python实现判断字符串中包含某个字符的判断函数示例...

    Python实现判断字符串中包含某个字符的判断函数示例 本文实例讲述了Python实现判断字符串中包含某个字符的判断函数 分享给大家供大家参考 具体如下 coding utf8 参数包含两个 containVar 查找包含的字符 strin
  • 【声音

    gbcax链交所 声音 众鼎集团董事长张哲仁 目前应专注区块链赋能实体经济 众鼎集团董事长张哲仁在第十二届上海金洽会之首届区块链论坛上表示 现在只有将发展重心聚焦应用场景落地 专注区块链赋能实体经济 才是未来区块链的正确发展方向
  • 医学成像中的深度学习——基于PyTorch的3D 医学图像分割

    深度学习和医学成像 计算机视觉领域深度网络的兴起为经典图像处理技术表现不佳的问题提供了最先进的解决方案 在图像识别的广义任务中 包括目标检测 图像分类和分割 活动识别 光流和姿态估计等问题 我们可以很容易地声称 DNN 深度神经网络 取得了
  • npm login 时报错npm ERR! code E403

    npm ERR code E403 npm ERR 403 403 Forbidden PUT https registry npmmirror com user org couchdb user jieyucx FORBIDDEN Pub
  • C++14后如何读入一行带空格的一行字符串

    前文 在c 11标准及之前 仍可以使用gets读入 但是c 14正式删除了gets这一不安全的读入 由于读入对空格的自动忽略 所以需要其他读入函数来处理带空格的字符串 具体读入方式 一 字符数组 A std cin getline str
  • linux中shell脚本手动执行没问题,crontab定时执行失败

    问题描述 Shell脚本手动执行可以正常运行 并得到正确结果 使用Crontab定时调度的时候 Shell脚本执行出来的结果数据量为0 原因 Linux下用crontab执行定时任务不会缺省的从用户profile文件中读取环境变量参数 所以
  • 区块链原理通俗说明

    通俗讲解区块链 区块链是一个记录数据的一个共享数据库 具有 不可伪造 全程留痕 可以追溯 公开透明 集体维护 等特征 根据其具体实现的差异可以实现不同的功能 例如数字货币 Bitcoin 智能合约等 例子 转载 白话区块链 早些时候 农村一
  • jira 安装注意事项

    1 邮件配置 2 破解时 先注册一个jira账户 申请一个试用密钥
  • 分配学号 Python123

    描述 附件中学院代码和专业代码文件中的数据是每个学院的编号和专业的编号 学生名单文件中有若干学生信息 学生出现的顺序是他在班级中排名顺序 每行中的数据用逗号分隔 各数据依顺代表
  • 谷粒商城-基础篇-商品服务2-品牌管理(P59-P69)+(P75)

    目录 一 商品服务 API 品牌管理 1 使用逆向工程的前后端代码 2 效果优化及显示开关 3 云存储开通与使用 1 阿里云对象存储oss 2 oss整合测试 3 SpringCloud Alibaba 4 创建第三方模块 并完成添加上传功
  • Error in created hook (Promise/async): “AxiosError: Request failed with status code 404“

    背景 Error in created hook Promise async AxiosError Request failed with status code 404 原因 路径不对导致报错 解决方法 检查获取接口的代码 是否有空格
  • Github上1.1KFork的C++笔记

    编程语言 C C 原文链接 如果觉得本文对你有所帮助 欢迎去原地址点个Star 侵删 https github com linw7 Skill Tre 目录 Chapter 1 Chapter 2 Chapter 3 Chapter 4 编
  • 《C++ Primer Plus》学习随记1---模拟EOF

    EOF 文件结束符 End Of File 通常 EOF被定义为值 1 几种检测模拟EOF结束输入的代码实现 1 eof fail 从输入流读取数据 eof 如果检测到EOF cin eof 返回true 否则返回false fail 用来
  • 中台建设:中台有效落地的6脉神剑

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • 关于利用Unity制作游戏登陆界面这件事

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 关于利用Unity制作游戏登陆界面这件事 前言 一 Unity是什么 二 制作历程 1 开始界面 2 音效背景 3 跳转页 总结 前言 由于是自学 故实现功能和代码不太完善
  • 模板方法模式(Template Method)

    模板方法模式 Template Method 概述 定义一个操作中的算法的骨架 而将一些步骤延迟到子类中 Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 例如生产饮料的流程 加原料 加水 烧水
  • 关于win10+2080ti 配置cuda cudnn 和tensorflow版本问题

    经过两天的设置 终于找到了配置的正确方法 现以文字的形式保留下来 防止忘记 本次配置的版本如下 python 3 5 2 cuda 10 0 一定要用10 0 10 1不行 cudnn 7 4 1 建议用这个 我用7 3 1提示我报错了 t
  • 【PTA】两个有序链表序列的交集 (20 分)

    记录这道题是因为被一个bug磨了很久很久 大概4个小时 自闭了 一直以为是自己的单链表知识不够才错的 妹想到是因为出现死循环 问了同学才知道错在这里 while p1 NULL p2 s2 这里 while p1 gt data p2 gt