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++链表的虚拟头节点实现细节及注... 目录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 的步骤安装必要的库步骤一:数据准备步骤二:模型

如何高效移除C++关联容器中的元素

《如何高效移除C++关联容器中的元素》关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,本文介绍了如何高效移除C+... 目录一、简介二、移除给定位置的元素三、移除与特定键值等价的元素四、移除满足特android定条件的元

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

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

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