最专业汽车网站建设,网站建设推广机构,wordpress 去掉版权信息,html5素材网站1075 链表元素分类 (25 分) 给定一个单链表#xff0c;请编写程序将链表元素进行分类排列#xff0c;使得所有负值元素都排在非负值元素的前面#xff0c;而 [0, K] 区间内的元素都排在大于 K 的元素前面。但每一类内部元素的顺序是不能改变的。例如#xff1a;给定链表为 …1075 链表元素分类 (25 分) 给定一个单链表请编写程序将链表元素进行分类排列使得所有负值元素都排在非负值元素的前面而 [0, K] 区间内的元素都排在大于 K 的元素前面。但每一类内部元素的顺序是不能改变的。例如给定链表为 18→7→-4→0→5→-6→10→11→-2K 为 10则输出应该为 -4→-6→-2→7→0→5→10→18→11。 输入格式
每个输入包含一个测试用例。每个测试用例第 1 行给出第 1 个结点的地址结点总个数即正整数N (≤10 5 )以及正整数K (≤10 3 )。结点的地址是 5 位非负整数NULL 地址用 −1 表示。 接下来有 N 行每行格式为 Address Data Next 其中 Address 是结点地址Data 是该结点保存的数据为 [−10 5 ,10 5 ] 区间内的整数Next 是下一结点的地址。题目保证给出的链表不为空。 输出格式
对每个测试用例按链表从头到尾的顺序输出重排后的结果链表其上每个结点占一行格式与输入相同。 输入样例
00100 9 10 23333 10 27777 00000 0 99999 00100 18 12309 68237 -6 23333 33218 -4 00000 48652 -2 -1 99999 5 68237 27777 11 48652 12309 7 33218 输出样例
33218 -4 68237 68237 -6 48652 48652 -2 12309 12309 7 00000 00000 0 99999 99999 5 23333 23333 10 00100 00100 18 27777 27777 11 -1
#includeiostream
#includevector
using namespace std;
struct node {int data, next;
}list[100000];
vectorintv[3];
int main()
{int start, n, k,x;cin start n k;for (int i 0; i n; i){cin x;cin list[x].datalist[x].next;}//int p start;while (start ! -1){if (list[start].data 0)v[0].push_back(start);else if(list[start].data 0 list[start].data k)v[1].push_back(start);else v[2].push_back(start);start list[start].next;}int flag 0;for (int i 0; i 3; i){for (int j 0; j v[i].size(); j){if (flag 0){printf(%05d %d , v[i][j], list[v[i][j]].data);flag 1;}else{printf(%05d\n%05d %d , v[i][j], v[i][j], list[v[i][j]].data);}}}printf(-1);
}