1075. 链表元素分类(25) PAT乙级真题
来源:互联网 发布:中国税务网络大学入口 编辑:程序博客网 时间:2024/06/05 11:36
1075. 链表元素分类(25)
给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0, K]区间内的元素都排在大于K的元素前面。但每一类内部元素的顺序是不能改变的。例如:给定链表为 18→7→-4→0→5→-6→10→11→-2,K为10,则输出应该为 -4→-6→-2→7→0→5→10→18→11。
输入格式:
每个输入包含1个测试用例。每个测试用例第1行给出:第1个结点的地址;结点总个数,即正整数N (<= 105);以及正整数K (<=1000)。结点的地址是5位非负整数,NULL地址用-1表示。
接下来有N行,每行格式为:
Address Data Next
其中Address是结点地址;Data是该结点保存的数据,为[-105, 105]区间内的整数;Next是下一结点的地址。题目保证给出的链表不为空。
输出格式:
对每个测试用例,按链表从头到尾的顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。
输入样例:00100 9 1023333 10 2777700000 0 9999900100 18 1230968237 -6 2333333218 -4 0000048652 -2 -199999 5 6823727777 11 4865212309 7 33218
输出样例:33218 -4 6823768237 -6 4865248652 -2 1230912309 7 0000000000 0 9999999999 5 2333323333 10 0010000100 18 2777727777 11 -1
这道题的意思就是按照链表的顺序将负值调到正值前面,其他顺序都不变,所以我们可以准备两个链表,第一个用来存放初始链表,第二个用来存放输出结果,我们先遍历一遍第一个链表,找到负值按顺序存放进第二个链表,再把剩下的值按顺序放进去就得到我们想要的值了,代码如下:#include<stdio.h>struct node{ int data; int locate; //list里面是next的地址,s里面是自己的地址}list[100000],s1[100000];int main(void){ int begin,n,k; int v,i,s=0; scanf("%d %d %d",&begin,&n,&k); for (i=0;i<n;i++) { scanf("%d",&v); scanf("%d %d",&list[v].data,&list[v].locate); } v=begin; for (i=0;v!=-1;i++) { if (list[v].data<0) { s1[s].data=list[v].data; s1[s++].locate=v; } v=list[v].locate; } v=begin; for (i=0;v!=-1;i++) { if (list[v].data>=0 &&list[v].data<=k) { s1[s].data=list[v].data; s1[s++].locate=v; } v=list[v].locate; } v=begin; for (i=0;v!=-1;i++) { if (list[v].data>k) { s1[s].data=list[v].data; s1[s++].locate=v; } v=list[v].locate; } printf("%05d %d ",s1[0].locate,s1[0].data); for (i=1;i<s;i++) { printf("%05d\n%05d %d ",s1[i].locate,s1[i].locate,s1[i].data); } printf("-1"); return 0;}
阅读全文
1 0
- 1075. 链表元素分类(25)-PAT乙级真题
- 1075. 链表元素分类(25) PAT乙级真题
- PAT乙级1075. 链表元素分类(25)
- pat 乙级 1075. 链表元素分类(25)
- 1025. 反转链表 (25)-浙大PAT乙级真题
- 1025. 反转链表 (25) PAT乙级真题
- PAT乙级真题
- 1012. 数字分类 (20)-PAT乙级真题
- pat乙级真题 1012. 数字分类 (20)
- 1012. 数字分类 (20) PAT乙级真题
- PAT乙级(Basic Level)真题 >反转链表
- 1055. 集体照 (25)-PAT乙级真题
- 1020. 月饼 (25)-PAT乙级真题
- 1060. 爱丁顿数(25)-PAT乙级真题
- PAT乙级真题1060. 爱丁顿数(25)
- 1020. 月饼 (25) PAT乙级真题
- pat乙级真题 1070. 结绳(25)
- 1055. 集体照 (25) PAT乙级真题
- Spring扫描自定义jar包中的Bean
- Mac
- Android xml 属性大全
- 朴素贝叶斯算法
- IT道德与伦理
- 1075. 链表元素分类(25) PAT乙级真题
- pygame库写游戏——入门<4>——字体
- 机器学习总结(一)——有监督和无监督、生成模型和判别模型
- Java设计模式——装饰器模式、适配器模式、外观模式
- 对数函数的C、MATLAB表示
- Spring IOC BeanFactory简单介绍
- unity实现触摸摇杆的个人实践体会
- Android Studio 2.3利用CMAKE进行OpenCV 3.2的NDK开发
- JSP学习1-概述