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

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型