PAT 1075 链表元素分类

2024-04-02 06:38
文章标签 链表 元素 分类 pat 1075

本文主要是介绍PAT 1075 链表元素分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:请点击
思路:定义结构体,其中一个结构体node,用下标表示该结点的地址,可直接访问地址得到结点相关信息,且保证每一类元素内部的顺序不变;另一个结构体是排好序待输出的。3次循环,每次按题要求找到一类元素,最后输出
注1 要注意结点有可能是孤立节点,即该结点与其他结点不是一个链表内的。测点4可能与此有关。
AC代码

#include<iostream>
using namespace std;
struct Node{int add;//结点地址 int data;//结点保存的数据 int next;//下一结点的地址 
};
Node node[500000]; //用下标表示该结点的地址 
int main(){int iniAdd,N,K;cin>>iniAdd>>N>>K;Node sort[N];//排序后待输出的结点 for(int i=0;i<N;i++){int add;cin>>add;node[add].add=add;cin>>node[add].data>>node[add].next;}int pos=iniAdd,l=0,cnt=0;while(pos!=-1){//先找到负值元素if(node[pos].data<0){if(cnt) sort[l-1].next=node[pos].add;sort[l].add=node[pos].add;sort[l].data=node[pos].data;cnt=1;l++;}pos=node[pos].next;}pos=iniAdd;while(pos!=-1){//找到在[0,K]区间内的元素if(node[pos].data>=0&&node[pos].data<=K){sort[l-1].next=node[pos].add;sort[l].add=node[pos].add;sort[l].data=node[pos].data;l++;}pos=node[pos].next;}pos=iniAdd;while(pos!=-1){//找到大于K的if(node[pos].data>K){sort[l-1].next=node[pos].add;sort[l].add=node[pos].add;sort[l].data=node[pos].data;l++;}pos=node[pos].next;}sort[l-1].next=-1;for(int i=0;i<l;i++){if(sort[i].next!=-1)printf("%05d %d %05d\n",sort[i].add,sort[i].data,sort[i].next);else printf("%05d %d %d\n",sort[i].add,sort[i].data,sort[i].next);}return 0;
} 

这篇关于PAT 1075 链表元素分类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

csu1329(双向链表)

题意:给n个盒子,编号为1到n,四个操作:1、将x盒子移到y的左边;2、将x盒子移到y的右边;3、交换x和y盒子的位置;4、将所有的盒子反过来放。 思路分析:用双向链表解决。每个操作的时间复杂度为O(1),用数组来模拟链表,下面的代码是参考刘老师的标程写的。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#

深入手撕链表

链表 分类概念单链表增尾插头插插入 删尾删头删删除 查完整实现带头不带头 双向链表初始化增尾插头插插入 删查完整代码 数组 分类 #mermaid-svg-qKD178fTiiaYeKjl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-

建立升序链表

题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2744 解决:1186 题目描述: 建立一个升序链表并遍历输出。 输入: 输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。 输出: 可能有多组测试数据,对于每组数据, 将n个整数建立升序链表,之后遍历链表并输出。 样例输

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点