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

相关文章

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

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 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,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

用Pytho解决分类问题_DBSCAN聚类算法模板

一:DBSCAN聚类算法的介绍 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,DBSCAN算法的核心思想是将具有足够高密度的区域划分为簇,并能够在具有噪声的空间数据库中发现任意形状的簇。 DBSCAN算法的主要特点包括: 1. 基于密度的聚类:DBSCAN算法通过识别被低密